?? ipc.java
字號:
public static int unsubscribeDisconnect (CONNECT_HANDLE_TYPE disconnectHandler) { return unsubscribeDisconnect(disconnectHandler.getClass()); } public static int subscribeHandlerChange (String msgName, CHANGE_HANDLE_TYPE handlerChangeHandler) { /* Do it this way because multiple handlers can be subscribed for same message */ List list = (List)handlerChangeHashTable.get(msgName); if (list == null) { list = new LinkedList(); handlerChangeHashTable.put(msgName, list); } list.add(0, handlerChangeHandler); if (list.size() == 1) { return IPC_subscribeHandlerChange(msgName); } else { return IPC_OK; } } public static int unsubscribeHandlerChange (String msgName, Class handlerChangeHandlerClass) { List handlerList = (List)handlerChangeHashTable.get(msgName); if (handlerList == null) { return IPC_Error; } else if (!removeFromHandlerList(handlerList, handlerChangeHandlerClass)) { System.out.println("No change handler found for message "+ msgName +" of class "+ handlerChangeHandlerClass.getName()); return IPC_Error; } else if (handlerList.size() == 0) { return IPC_unsubscribeHandlerChange(msgName); } else { return IPC_OK; } } public static int unsubscribeHandlerChange (String msgName, CHANGE_HANDLE_TYPE handlerChangeHandler){ return unsubscribeHandlerChange(msgName, handlerChangeHandler.getClass()); } public static int numHandlers (String msgName) { return IPC_numHandlers(msgName); } public static int defineFormat (String formatName, String formatString) { return IPC_defineFormat(formatName, formatString); } public static int checkMsgFormats (String formatName, String formatString) { return IPC_checkMsgFormats(formatName, formatString); } public static int publishData (String msgName, Object data) { formatters.VARCONTENT varcontent = new formatters.VARCONTENT(); int retVal, marshallRet = IPC_OK; try { marshallRet = formatters.marshall(IPC_msgFormatter(msgName), coerceDataObject(data), varcontent); } catch ( Exception e) { handleException("publishData", msgName, e); } if (marshallRet == IPC_Error) { return IPC_Error; } else { retVal = IPC_publish(msgName, varcontent.length, varcontent.byteArray); if (varcontent.byteArray != 0) IPC_freeByteArray(varcontent.byteArray); return retVal; } } /* Specialized versions of "publish" to handle primitive data types */ public static int publishData (String msgName, char data) { return publishData(msgName, new formatters.IPCChar(data)); } public static int publishData (String msgName, boolean data) { return publishData(msgName, new formatters.IPCBoolean(data)); } public static int publishData (String msgName, byte data) { return publishData(msgName, new formatters.IPCByte(data)); } public static int publishData (String msgName, short data) { return publishData(msgName, new formatters.IPCShort(data)); } public static int publishData (String msgName, int data) { return publishData(msgName, new formatters.IPCInteger(data)); } public static int publishData (String msgName, long data) { return publishData(msgName, new formatters.IPCLong(data)); } public static int publishData (String msgName, float data) { return publishData(msgName, new formatters.IPCFloat(data)); } public static int publishData (String msgName, double data) { return publishData(msgName, new formatters.IPCDouble(data)); } public static int respondData (MSG_INSTANCE msgInstance, String msgName, Object data) { formatters.VARCONTENT varcontent = new formatters.VARCONTENT(); int retVal, marshallRet = IPC_OK; try { marshallRet = formatters.marshall(IPC_msgFormatter(msgName), coerceDataObject(data), varcontent); } catch ( Exception e) { handleException("respondData", msgName, e); } if (marshallRet == IPC_Error) { return IPC_Error; } else { retVal = IPC_respond(msgInstance.cptr, msgName, varcontent.length, varcontent.byteArray); if (varcontent.byteArray != 0) IPC_freeByteArray(varcontent.byteArray); return retVal; } } /* Specialized versions of "respond" to handle primitive data types */ public static int respondData (MSG_INSTANCE msgInstance, String msgName, char data) { return respondData(msgInstance, msgName, new formatters.IPCChar(data)); } public static int respondData (MSG_INSTANCE msgInstance, String msgName, boolean data) { return respondData(msgInstance, msgName, new formatters.IPCBoolean(data));} public static int respondData (MSG_INSTANCE msgInstance, String msgName, byte data) { return respondData(msgInstance, msgName, new formatters.IPCByte(data)); } public static int respondData (MSG_INSTANCE msgInstance, String msgName, short data) { return respondData(msgInstance, msgName, new formatters.IPCShort(data)); } public static int respondData (MSG_INSTANCE msgInstance, String msgName, int data) { return respondData(msgInstance, msgName, new formatters.IPCInteger(data));} public static int respondData (MSG_INSTANCE msgInstance, String msgName, long data) { return respondData(msgInstance, msgName, new formatters.IPCLong(data)); } public static int respondData (MSG_INSTANCE msgInstance, String msgName, float data) { return respondData(msgInstance, msgName, new formatters.IPCFloat(data)); } public static int respondData (MSG_INSTANCE msgInstance, String msgName, double data) { return respondData(msgInstance, msgName, new formatters.IPCDouble(data)); } public static int queryNotifyData (String msgName, Object data, HANDLER_TYPE handler, Class responseClass) { formatters.VARCONTENT varcontent = new formatters.VARCONTENT(); int retVal, marshallRet = IPC_OK; try { marshallRet = formatters.marshall(IPC_msgFormatter(msgName), coerceDataObject(data), varcontent); } catch ( Exception e) { handleException("queryNotifyData", msgName, e); } if (marshallRet == IPC_Error) { return IPC_Error; } else { int handlerNum = ++handlerNumber; String hashKey = Integer.toString(handlerNum); msgHashTable.put(hashKey, new handlerHashData(handler, responseClass)); retVal = IPC_queryNotify(msgName, varcontent.length, varcontent.byteArray, handlerNum); if (varcontent.byteArray != 0) IPC_freeByteArray(varcontent.byteArray); return retVal; } } /* Specialized versions of "queryNotify" to handle primitive data types */ public static int queryNotifyData (String msgName, char data, HANDLER_TYPE handler, Class responseClass) { return queryNotifyData(msgName, new formatters.IPCChar(data), handler, responseClass); } public static int queryNotifyData (String msgName, boolean data, HANDLER_TYPE handler, Class responseClass) { return queryNotifyData(msgName, new formatters.IPCBoolean(data), handler, responseClass); } public static int queryNotifyData (String msgName, byte data, HANDLER_TYPE handler, Class responseClass) { return queryNotifyData(msgName, new formatters.IPCByte(data), handler, responseClass); } public static int queryNotifyData (String msgName, short data, HANDLER_TYPE handler, Class responseClass) { return queryNotifyData(msgName, new formatters.IPCShort(data), handler, responseClass); } public static int queryNotifyData (String msgName, int data, HANDLER_TYPE handler, Class responseClass) { return queryNotifyData(msgName, new formatters.IPCInteger(data), handler, responseClass); } public static int queryNotifyData (String msgName, long data, HANDLER_TYPE handler, Class responseClass) { return queryNotifyData(msgName, new formatters.IPCLong(data), handler, responseClass); } public static int queryNotifyData (String msgName, float data, HANDLER_TYPE handler, Class responseClass) { return queryNotifyData(msgName, new formatters.IPCFloat(data), handler, responseClass); } public static int queryNotifyData (String msgName, double data, HANDLER_TYPE handler, Class responseClass) { return queryNotifyData(msgName, new formatters.IPCDouble(data), handler, responseClass); } public static Object queryResponseData (String msgName, Object data, Class responseClass, long timeoutMSecs) { formatters.VARCONTENT varcontent = new formatters.VARCONTENT(); Object responseObject = null; int retVal; try { if (formatters.marshall(IPC_msgFormatter(msgName),coerceDataObject(data), varcontent) != IPC_Error) { queryResponse response = new queryResponse(); retVal = IPC_queryResponse(msgName, varcontent.length, varcontent.byteArray, response, timeoutMSecs); if (varcontent.byteArray != 0) IPC_freeByteArray(varcontent.byteArray); if (retVal == IPC_OK && varcontent.byteArray != 0) { responseObject = unmarshallMsgData(response.formatter, response.byteArray, responseClass); } } } catch ( Exception e) { handleException("queryResponseData", msgName, e); } return responseObject; } /* Specialized versions of "queryResponse" to handle primitive data types */ public static Object queryResponseData (String msgName, char data, Class responseClass, long timeOutMSecs) { return queryResponseData(msgName, new formatters.IPCChar(data), responseClass, timeOutMSecs); } public static Object queryResponseData (String msgName, boolean data, Class responseClass, long timeOutMSecs) { return queryResponseData(msgName, new formatters.IPCBoolean(data), responseClass, timeOutMSecs); } public static Object queryResponseData (String msgName, byte data, Class responseClass, long timeOutMSecs) { return queryResponseData(msgName, new formatters.IPCByte(data), responseClass, timeOutMSecs); } public static Object queryResponseData (String msgName, short data, Class responseClass, long timeOutMSecs) { return queryResponseData(msgName, new formatters.IPCShort(data), responseClass, timeOutMSecs); } public static Object queryResponseData (String msgName, int data, Class responseClass, long timeOutMSecs) { return queryResponseData(msgName, new formatters.IPCInteger(data), responseClass, timeOutMSecs); } public static Object queryResponseData (String msgName, long data, Class responseClass, long timeOutMSecs) { return queryResponseData(msgName, new formatters.IPCLong(data), responseClass, timeOutMSecs); } public static Object queryResponseData (String msgName, float data, Class responseClass, long timeOutMSecs) { return queryResponseData(msgName, new formatters.IPCFloat(data), responseClass, timeOutMSecs); } public static Object queryResponseData (String msgName, double data, Class responseClass, long timeOutMSecs) { return queryResponseData(msgName, new formatters.IPCDouble(data), responseClass, timeOutMSecs); } public static IPC_CONTEXT getContext () { return new IPC_CONTEXT(IPC_getContext()); } public static int setContext (IPC_CONTEXT context) { return IPC_setContext(context.cptr); } public static long getPID() { return IPC_getPID(); } public static int addTimer (long tdelay, long count, TIMER_HANDLER_TYPE handler) { int handlerNum = ++handlerNumber; String hashKey = Integer.toString(handlerNum); timerHashTable.put(handler.getClass().getName(), hashKey); timerHashTable.put(hashKey, handler); return IPC_addTimer(tdelay, count, handlerNum); } public static int addTimerGetRef (long tdelay, long count, TIMER_HANDLER_TYPE handler, TIMER_REF timerRef) { int refVal, handlerNum = ++handlerNumber; String hashKey = Integer.toString(handlerNum); timerHashTable.put(hashKey, handler); refVal = IPC_addTimerGetRef(tdelay, count, handlerNum); if (refVal == 0) { return IPC_Error;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -