com.sun.jna.Memory Java Examples
The following examples show how to use
com.sun.jna.Memory.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: JnaUnixMediatorImpl.java From consulo with Apache License 2.0 | 6 votes |
@Override public FileAttributes getAttributes(@Nonnull String path) { Memory buffer = new Memory(256); int res = SystemInfo.isLinux ? myLibC.__lxstat64(STAT_VER, path, buffer) : myLibC.lstat(path, buffer); if (res != 0) return null; int mode = getModeFlags(buffer) & LibC.S_MASK; boolean isSymlink = (mode & LibC.S_IFMT) == LibC.S_IFLNK; if (isSymlink) { if (!loadFileStatus(path, buffer)) { return FileAttributes.BROKEN_SYMLINK; } mode = getModeFlags(buffer) & LibC.S_MASK; } boolean isDirectory = (mode & LibC.S_IFMT) == LibC.S_IFDIR; boolean isSpecial = !isDirectory && (mode & LibC.S_IFMT) != LibC.S_IFREG; long size = buffer.getLong(myOffsets[OFF_SIZE]); long mTime1 = SystemInfo.is32Bit ? buffer.getInt(myOffsets[OFF_TIME]) : buffer.getLong(myOffsets[OFF_TIME]); long mTime2 = myCoarseTs ? 0 : SystemInfo.is32Bit ? buffer.getInt(myOffsets[OFF_TIME] + 4) : buffer.getLong(myOffsets[OFF_TIME] + 8); long mTime = mTime1 * 1000 + mTime2 / 1000000; boolean writable = ownFile(buffer) ? (mode & LibC.WRITE_MASK) != 0 : myLibC.access(path, LibC.W_OK) == 0; return new FileAttributes(isDirectory, isSpecial, isSymlink, false, size, mTime, writable); }
Example #2
Source File: MessageQueue.java From domino-jna with Apache License 2.0 | 6 votes |
/** * Create a message queue with the specified name. * * @param queueName name to be assigned to the message queue * @param quota Maximum number of messages that the queue may contain. Set this to zero for the default maximum. The default maximum number of messages that the queue may contain is MAXWORD. * @param noRecycle true to exclude the queue from auto GC so that it can be used later on by other processes * @return queue */ public static MessageQueue createAndOpen(String queueName, int quota, boolean noRecycle) { Memory queueNameMem = NotesStringUtils.toLMBCS(queueName, true); short result = NotesNativeAPI.get().MQCreate(queueNameMem, (short) (quota & 0xffff), 0); NotesErrorUtils.checkResult(result); IntByReference retQueue = new IntByReference(); result = NotesNativeAPI.get().MQOpen(queueNameMem, 0, retQueue); NotesErrorUtils.checkResult(result); MessageQueue queue = new MessageQueue(queueName, retQueue.getValue()); if (!noRecycle) { NotesGC.__objectCreated(MessageQueue.class, queue); } return queue; }
Example #3
Source File: MessageQueue.java From domino-jna with Apache License 2.0 | 6 votes |
/** * Method to test whether a queue with a specified name exists (tries to open the queue) * * @param queueName queue name * @return true if queue exists */ public static boolean hasQueue(String queueName) { Memory queueNameMem = NotesStringUtils.toLMBCS(queueName, true); IntByReference retQueue = new IntByReference(); short result = NotesNativeAPI.get().MQOpen(queueNameMem, 0, retQueue); if (result==INotesErrorConstants.ERR_NO_SUCH_MQ) { return false; } else if (result==0) { result = NotesNativeAPI.get().MQClose(retQueue.getValue(), 0); NotesErrorUtils.checkResult(result); return true; } else { NotesErrorUtils.checkResult(result); return false; } }
Example #4
Source File: NotesStringUtils.java From domino-jna with Apache License 2.0 | 6 votes |
/** * Given a fully-qualified network path to a Domino database file, this function breaks it * into its port name, server name, and filename components.<br> * If the fully qualified path contains just the port name and/or server name components, * then they will be the only ones returned.<br> * <br> * Expanded database filepath syntax:<br> * <br> * {Port} NetworkSeparator {servername} Serversuffix {filename}<br> * COM! {NetworkSeparator} NOTESBETA {ServerSuffix} NOTEFILE\APICOMMS.NSF<br> * <br> * Note: the NetworkSeparator and ServerSuffix are not system independent. To maintain the * portability of your code, it is recommended that you make no explicit use of them * anywhere in your programs. * * @param pathName expanded path specification of a Domino database file * @return String array of portname, servername, filename */ public static String[] osPathNetParse(String pathName) { DisposableMemory retPortNameMem = new DisposableMemory(NotesConstants.MAXPATH); DisposableMemory retServerNameMem = new DisposableMemory(NotesConstants.MAXPATH); DisposableMemory retFileNameMem = new DisposableMemory(NotesConstants.MAXPATH); Memory pathNameMem = toLMBCS(pathName, true); short result = NotesNativeAPI.get().OSPathNetParse(pathNameMem, retPortNameMem, retServerNameMem, retFileNameMem); NotesErrorUtils.checkResult(result); String portName = fromLMBCS(retPortNameMem, getNullTerminatedLength(retPortNameMem)); String serverName = fromLMBCS(retServerNameMem, getNullTerminatedLength(retServerNameMem)); String fileName = fromLMBCS(retFileNameMem, getNullTerminatedLength(retFileNameMem)); retPortNameMem.dispose(); retServerNameMem.dispose(); retFileNameMem.dispose(); return new String[] {portName, serverName, fileName}; }
Example #5
Source File: NotesStringUtils.java From domino-jna with Apache License 2.0 | 6 votes |
/** * Scans the Memory object for null values * * @param in memory * @return number of bytes before null byte in memory */ public static int getNullTerminatedLength(Memory in) { if (in == null) { return 0; } int textLen = (int) in.size(); //search for terminating null character for (int i=0; i<textLen; i++) { byte b = in.getByte(i); if (b==0) { textLen = i; break; } } return textLen; }
Example #6
Source File: Poller.java From jnanomsg with Apache License 2.0 | 6 votes |
public void register(Socket socket, int flags) { int pos = this.next; this.next += EVENT_SIZE; if (pos > this.items.size()) { final long newSize = this.items.size() + (EVENT_SIZE * SIZE_INCREMENT); final Memory newItems = new Memory(newSize); for(int i=0; i<this.items.size(); i++) { newItems.setByte(i, this.items.getByte(i)); } } final int socketFd = socket.getFd(); final NNPollEvent.ByReference event = new NNPollEvent.ByReference(); event.reuse(this.items, pos); event.fd = socketFd; event.events = (short)flags; event.write(); this.offsetMap.put(socketFd, pos); }
Example #7
Source File: INotesNativeAPI.java From domino-jna with Apache License 2.0 | 5 votes |
public short SECTokenValidate( Memory ServerName, Memory OrgName, Memory ConfigName, Memory TokenData, Memory retUsername, NotesTimeDateStruct retCreation, NotesTimeDateStruct retExpiration, int dwReserved, Pointer vpReserved);
Example #8
Source File: CodecUtils.java From java-erasure with Apache License 2.0 | 5 votes |
/** * Converts a java byte[][] array to JNA Pointer[] array. */ public static Pointer[] toPointerArray(byte[][] array) { Pointer[] ptrArray = new Pointer[array.length]; for (int i = 0; i < array.length; ++i) { ptrArray[i] = new Memory(array[i].length); ptrArray[i].write(0, array[i], 0, array[i].length); } return ptrArray; }
Example #9
Source File: INotesNativeAPI64.java From domino-jna with Apache License 2.0 | 5 votes |
public short NSFMimePartCreateStream( long hNote, Memory pchItemName, short wItemNameLen, short wPartType, int dwFlags, LongByReference phCtx);
Example #10
Source File: IDUtils.java From domino-jna with Apache License 2.0 | 5 votes |
/** * This function will extract the username from an ID file. * * @param idPath id path * @return canonical username */ public static String getUsernameFromId(String idPath) { Memory idPathMem = NotesStringUtils.toLMBCS(idPath, true); String name = getIDInfoAsString(idPathMem, NotesConstants.REGIDGetName, NotesConstants.MAXUSERNAME+1); return name; }
Example #11
Source File: NotesNativeAPI32.java From domino-jna with Apache License 2.0 | 5 votes |
public native void MimeGetTypeInfoFromExt( Memory pszExt, Memory pszTypeBuf, short wTypeBufLen, Memory pszSubtypeBuf, short wSubtypeBufLen, Memory pszDescrBuf, short wDescrBufLen);
Example #12
Source File: INotesNativeAPI64.java From domino-jna with Apache License 2.0 | 5 votes |
public void NSFItemQueryEx( long note_handle, NotesBlockIdStruct.ByValue item_bid, Memory item_name, short return_buf_len, ShortByReference name_len_ptr, ShortByReference item_flags_ptr, ShortByReference value_datatype_ptr, NotesBlockIdStruct value_bid_ptr, IntByReference value_len_ptr, ByteByReference retSeqByte, ByteByReference retDupItemID);
Example #13
Source File: INotesNativeAPI64.java From domino-jna with Apache License 2.0 | 5 votes |
public short ACLUpdateEntry( long hACL, Memory name, short updateFlags, Memory newName, short newAccessLevel, Memory newPrivileges, short newAccessFlags);
Example #14
Source File: INotesNativeAPI32.java From domino-jna with Apache License 2.0 | 5 votes |
public short NSFMimePartCreateStream( int hNote, Memory pchItemName, short wItemNameLen, short wPartType, int dwFlags, IntByReference phCtx);
Example #15
Source File: INotesNativeAPI32.java From domino-jna with Apache License 2.0 | 5 votes |
public short NSFDbGetNotes( int hDB, int NumNotes, Memory NoteID, //NOTEID array Memory NoteOpenFlags, // DWORD array Memory SinceSeqNum, // DWORD array int ControlFlags, int hObjectDB, Pointer CallbackParam, NotesCallbacks.NSFGetNotesCallback GetNotesCallback, NotesCallbacks.b32_NSFNoteOpenCallback NoteOpenCallback, NotesCallbacks.b32_NSFObjectAllocCallback ObjectAllocCallback, NotesCallbacks.b32_NSFObjectWriteCallback ObjectWriteCallback, NotesTimeDateStruct FolderSinceTime, NotesCallbacks.NSFFolderAddCallback FolderAddCallback);
Example #16
Source File: MacNetworkProxy.java From netbeans with Apache License 2.0 | 5 votes |
/** * Converts CFString object to String. * * @param cfStringPointer Pointer to CFString object * @return String from CFString */ private String getStringFromCFStringRef(Pointer cfStringPointer) { if (cfStringPointer != null) { long lenght = cfLibrary.CFStringGetLength(cfStringPointer); long maxSize = cfLibrary.CFStringGetMaximumSizeForEncoding(lenght, 0x08000100); // 0x08000100 = UTF-8 Pointer buffer = new Memory(maxSize); if (cfLibrary.CFStringGetCString(cfStringPointer, buffer, maxSize, 0x08000100)) { // 0x08000100 = UTF-8 return buffer.getString(0L); } } return null; }
Example #17
Source File: INotesNativeAPI64.java From domino-jna with Apache License 2.0 | 5 votes |
public short NSFDbCreateAndCopyExtended( Memory srcDb, Memory dstDb, short NoteClass, short limit, int flags, long hNames, LongByReference hNewDb);
Example #18
Source File: INotesNativeAPI32.java From domino-jna with Apache License 2.0 | 5 votes |
public short ACLUpdateEntry( int hACL, Memory name, short updateFlags, Memory newName, short newAccessLevel, Memory newPrivileges, short newAccessFlags);
Example #19
Source File: ItemDecoder.java From domino-jna with Apache License 2.0 | 5 votes |
public static List<Object> decodeTextListValue(Pointer ptr, boolean convertStringsLazily) { //read a text list item value int listCountAsInt = ptr.getShort(0) & 0xffff; List<Object> listValues = new ArrayList<Object>(listCountAsInt); Memory retTextPointer = new Memory(Native.POINTER_SIZE); ShortByReference retTextLength = new ShortByReference(); for (short l=0; l<listCountAsInt; l++) { short result = NotesNativeAPI.get().ListGetText(ptr, false, l, retTextPointer, retTextLength); NotesErrorUtils.checkResult(result); //retTextPointer[0] points to the list entry text Pointer pointerToTextInMem = retTextPointer.getPointer(0); int retTextLengthAsInt = retTextLength.getValue() & 0xffff; if (retTextLengthAsInt==0) { listValues.add(""); } else { if (convertStringsLazily) { byte[] stringDataArr = new byte[retTextLengthAsInt]; pointerToTextInMem.read(0, stringDataArr, 0, retTextLengthAsInt); LMBCSString lmbcsString = new LMBCSString(stringDataArr); listValues.add(lmbcsString); } else { String currListEntry = NotesStringUtils.fromLMBCS(pointerToTextInMem, (short) retTextLengthAsInt); listValues.add(currListEntry); } } } return listValues; }
Example #20
Source File: INotesNativeAPI32.java From domino-jna with Apache License 2.0 | 5 votes |
public short NSFDbNoteLock( int hDB, int NoteID, int Flags, Memory pLockers, IntByReference rethLockers, IntByReference retLength);
Example #21
Source File: INotesNativeAPI32.java From domino-jna with Apache License 2.0 | 5 votes |
public short SECTokenGenerate( Memory ServerName, Memory OrgName, Memory ConfigName, Memory UserName, NotesTimeDateStruct Creation, NotesTimeDateStruct Expiration, IntByReference retmhToken, int dwReserved, Pointer vpReserved);
Example #22
Source File: INotesNativeAPI32.java From domino-jna with Apache License 2.0 | 5 votes |
@UndocumentedAPI public short NSFDbGetTcpHostName( int hDB, /* Database Handle */ Memory pszHostName, /* Return TCP Host Name */ short wMaxHostNameLen, /* Size of Host Name Buffer */ Memory pszDomainName, /* Return TCP Domain Name */ short wMaxDomainNameLen, /* Size of Domain Buffer */ Memory pszFullName, /* Return Full TCP Name */ short wMaxFullNameLen);
Example #23
Source File: NotesNativeAPI64.java From domino-jna with Apache License 2.0 | 5 votes |
public native short NSFItemInfo( long note_handle, Memory item_name, short name_len, NotesBlockIdStruct retbhItem, ShortByReference retDataType, NotesBlockIdStruct retbhValue, IntByReference retValueLength);
Example #24
Source File: ReadOnlyMemory.java From domino-jna with Apache License 2.0 | 5 votes |
@Override public Memory align(int byteBoundary) { if (m_sealed) throw new UnsupportedOperationException(); return super.align(byteBoundary); }
Example #25
Source File: INotesNativeAPI32.java From domino-jna with Apache License 2.0 | 5 votes |
public void MimeGetTypeInfoFromExt( Memory pszExt, Memory pszTypeBuf, short wTypeBufLen, Memory pszSubtypeBuf, short wSubtypeBufLen, Memory pszDescrBuf, short wDescrBufLen);
Example #26
Source File: INotesNativeAPI32.java From domino-jna with Apache License 2.0 | 5 votes |
public short CalNoticeActionUNID( int hDB, NotesUniversalNoteIdStruct unid, int dwAction, Memory pszComments, NotesCalendarActionDataStruct pExtActionInfo, int dwFlags, Pointer pCtx);
Example #27
Source File: INotesNativeAPI32.java From domino-jna with Apache License 2.0 | 5 votes |
public short CalGetUIDfromUNID( int hDB, NotesUniversalNoteIdStruct unid, Memory pszUID, short wLen, Pointer pReserved, int dwFlags, Pointer pCtx);
Example #28
Source File: NotesNativeAPI32.java From domino-jna with Apache License 2.0 | 5 votes |
public native short MIMEGetText( int hNote, Memory pchItemName, short wItemNameLen, boolean bNotesEOL, Memory pchBuf, int dwMaxBufLen, IntByReference pdwBufLen);
Example #29
Source File: INotesNativeAPI32.java From domino-jna with Apache License 2.0 | 5 votes |
public short NSFNoteAttachFile( int note_handle, Memory item_name, short item_name_length, Memory file_name, Memory orig_path_name, short encoding_type);
Example #30
Source File: NotesSearchKeyEncoder.java From domino-jna with Apache License 2.0 | 5 votes |
/** * Searching with number range keys is not supported yet (R9), as the * <a href="http://www-12.lotus.com/ldd/doc/domino_notes/9.0/api90ref.nsf/70cfe734675fd140852561ce00718042/35abe18f9580ca2d8525622e0062c48d?OpenDocument">documentation</a> says. * * @param itemOut output stream for ITEM structure * @param valueDataOut output stream for search key value * @param currKey search key * @throws Exception in case of errors */ private static void addNumberRangeKey(OutputStream itemOut, OutputStream valueDataOut, double[] currKey) throws Exception { if (currKey.length!=2) throw new IllegalArgumentException("Double search key array must have exactly 2 elements. We found "+currKey.length); Memory itemMem = new Memory(NotesConstants.tableItemSize); NotesTableItemStruct item = NotesTableItemStruct.newInstance(itemMem); item.NameLength = 0; item.ValueLength = (short) ((NotesConstants.rangeSize + NotesConstants.numberPairSize + 2) & 0xffff); item.write(); for (int i=0; i<NotesConstants.tableItemSize; i++) { itemOut.write(itemMem.getByte(i)); } Memory valueMem = new Memory(NotesConstants.rangeSize + NotesConstants.numberPairSize + 2); valueMem.setShort(0, (short) NotesItem.TYPE_NUMBER_RANGE); Pointer rangePtr = valueMem.share(2); NotesRangeStruct range = NotesRangeStruct.newInstance(rangePtr); range.ListEntries = 0; range.RangeEntries = 1; range.write(); Pointer pairPtr = rangePtr.share(NotesConstants.rangeSize); NotesNumberPairStruct pair = NotesNumberPairStruct.newInstance(pairPtr); pair.Lower = currKey[0]; pair.Upper = currKey[1]; pair.write(); for (int i=0; i<valueMem.size(); i++) { valueDataOut.write(valueMem.getByte(i)); } }