private int invokeInternal(String methodName, Vector<String> methodArgs) { s_replyId++; methodArgs.insertElementAt(s_replyId.toString(), 0); m_node.callMethod(m_addr, methodName, methodArgs, s_replyId, this); m_pendingReplies.put(s_replyId, methodName); // Wait up to 9 ticks for an RPC reply to arrive Callback cb = new Callback(m_timeoutMethod, this, new Object[] {s_replyId}); m_node.addTimeout(cb, 3 + 6 + 9); return s_replyId; }
public void onMethodReply(int sender, Integer replyId, int result, String content) { if (m_pendingReplies.containsKey(replyId)) { String methodName = m_pendingReplies.get(replyId); m_pendingReplies.remove(replyId); dispatchReply(replyId, methodName, sender, result, content); } else { // Unexpected reply m_node.error(String.format("Unexpected reply id: %d", replyId)); } }