示例#1
0
 /// <summary>
 /// Route a RMI request to the host with the target node
 /// </summary>
 /// <param name="rmi"></param>
 /// <param name="destoNode"> </param>
 public void RouteRMIRequest(NodeRMI rmi, NodeInfo destoNode)
 {
     if(destoNode.HostID.Length == 1)
     {
         rmi.SerializeReturnValue(destoNode.RMIResolvedType.GetMethod(rmi.MethodName).Invoke(controller, rmi.DeserializeArguments()));
         RouteRMIResponse(rmi);
         return;
     }
     var destoHost = HostCache.FindHost(destoNode.HostID);
     SendTo(destoHost.Info, destoHost.BuildMessage(MessageIdentifier.RMIInvoke, rmi.Serialize()));
 }
示例#2
0
 /// <summary>
 /// Route a RMI response to the host.
 /// </summary>
 /// <param name="rmi"></param>
 public void RouteRMIResponse(NodeRMI rmi)
 {
     var target = NodePool.Instance.NodeForId(rmi.SNodeID);
     if(target == null)
     {
         log.Debug("RMI response "+rmi.RequestID+" dropped as the initiator doesn't exist anymore.");
         return;
     }
     var targetHost = HostCache.FindHost(target.HostID);
     SendTo(targetHost.Info, targetHost.BuildMessage(MessageIdentifier.RMIResponse, rmi.Serialize()));
 }