예제 #1
0
    public static async Task<string> SendToOneMachineAsync(String ipAddress, String command, Object[] parameters)
    {
        await Task.Delay(100);
        try
        {
            //don't send to self
            String myIpAddress = NetworkHelper.GetMyIpAddress();
            if (ipAddress != myIpAddress)
            {
                newProxy = XmlRpcProxyGen.Create<ICSharpRpcClient>();
                newProxy.Url = ServerUrlStart + ipAddress + ServerUrlEnd;
                object response;

                switch (command)
                {
                    case GlobalMethodName.leaderElection:
                        newProxy.leaderElection(parameters[0].ToString());
                        response = "Async call called";
                        break;

                    case GlobalMethodName.requestHandlerStartMessage:
                        response = newProxy.requestStartMessage(Convert.ToBoolean(parameters[0]), Convert.ToBoolean(parameters[1]));
                        break;

                    case GlobalMethodName.requestHandlerReceivePermission:
                        newProxy.requestReceivePermission((int)parameters[0], (int)parameters[1], parameters[2].ToString());
                        response = "Async call receive permission called";
                        break;

                    case GlobalMethodName.requestCentralStartMessage:
                        response = newProxy.requestCentralStartMessage((bool)parameters[0], (bool)parameters[1]);
                        break;

                    case GlobalMethodName.requestCentralReceiveRequest:
                        newProxy.requestCentralReceiveRequest(parameters[0].ToString(), parameters[1].ToString());
                        response = "Async call receive request called";
                        break;

                    case GlobalMethodName.requestCentralGetPermission:
                        newProxy.requestCentralGetPermission(parameters[0].ToString(), parameters[1].ToString());
                        response = "success";
                        break;

                    case GlobalMethodName.requestCentralFinishRequest:
                        newProxy.requestCentralFinishRequest(parameters[0].ToString());
                        response = "Async call finish request called";
                        break;

                    default:
                        response = "no such command";
                        break;
                }

                Console.WriteLine(classNameLog + "Message: " + response);

                return response.ToString();
            }
            else
            {
                return "Sending to self is not permitable";
            }
        }
        catch (XmlRpcException e)
        {
            return "Connection refused";
        }        
        catch (Exception e)
        {
            Console.WriteLine("{0}", e.InnerException);
            return e.Message;
        }
    }
예제 #2
0
    public static Object SendToOneMachine(String ipAddress, String command, Object[] parameter)
    {
        try
        {
            //don't send to self
            String myIpAddress = NetworkHelper.GetMyIpAddress();

            if (ipAddress != myIpAddress)
            {
                newProxy = XmlRpcProxyGen.Create<ICSharpRpcClient>();
                newProxy.Url = ServerUrlStart + ipAddress + ServerUrlEnd;
                object response;
                switch (command)
                {
                    case GlobalMethodName.getMachines:
                        response = newProxy.getMachines(parameter[0].ToString());
                        break;

                    case GlobalMethodName.serverShutDownFromClient:
                        newProxy.serverShutDownFromClient();
                        response = "success";
                        break;

                    case GlobalMethodName.leaderElection:
                        response = newProxy.leaderElection(parameter[0].ToString());
                        break;

                    case GlobalMethodName.getIpMaster:
                        response = newProxy.getIpMaster(parameter[0].ToString());
                        break;

                    case GlobalMethodName.removeMachineIp:
                        response = newProxy.removeMachineIp(parameter[0].ToString());
                        break;

                    case GlobalMethodName.newMachineJoin:
                        response = newProxy.newMachineJoin(parameter[0].ToString());
                        break;

                    case GlobalMethodName.newMachineJoinNotification:
                        response = newProxy.newMachineJoinNotification(parameter[0].ToString(), parameter[1].ToString());
                        break;

                    case GlobalMethodName.addNewMachine:
                        response = newProxy.addNewMachine(parameter[0].ToString(), parameter[1].ToString());
                        break;

                    case GlobalMethodName.getKeyMaster:
                        response = newProxy.getKeyMaster(parameter[0].ToString());
                        break;

                    case GlobalMethodName.checkLeaderValidity:
                        response = newProxy.checkLeaderValidity(parameter[0].ToString());
                        break;

                    case GlobalMethodName.setNewLeader:
                        response = newProxy.setNewLeader((int)parameter[0]);
                        break;

                    #region Request Handler
                    case GlobalMethodName.requestHandlerStartMessage:
                        response = newProxy.requestStartMessage(Convert.ToBoolean(parameter[0]), Convert.ToBoolean(parameter[1]));
                        break;

                    case GlobalMethodName.requestHandlerReceivePermission:
                        response = newProxy.requestReceivePermission((int)parameter[0], (int)parameter[1], parameter[2].ToString());
                        break;

                    case GlobalMethodName.requestHandlerRequestPermission:
                        response = newProxy.requestRequestPermission((int)parameter[0], (int)parameter[1], parameter[2].ToString(), parameter[3].ToString());
                        break;
                    #endregion

                    #region RequestCentral Handler
                    case GlobalMethodName.requestCentralStartMessage:
                        response = newProxy.requestCentralStartMessage((bool)parameter[0], (bool)parameter[1]);
                        break;

                    case GlobalMethodName.requestCentralGetPermission:
                        newProxy.requestCentralGetPermission(parameter[0].ToString(), parameter[1].ToString());
                        response = "success";
                        break;
                    #endregion

                    #region Resource Handler                                            
                    case GlobalMethodName.resourceGetString:
                        response = newProxy.resourceGetString(parameter[0].ToString());
                        break;

                    case GlobalMethodName.resourceSetString:
                        response = newProxy.resourceSetString(parameter[0].ToString(), parameter[1].ToString());
                        break;
                    #endregion

                    default:
                        response = "No such command";
                        break;
                }

                Console.WriteLine(classNameLog + "Message: " + response);
                return response;
            }
            else
            {
                return "Sending to self is not permitable";
            }
        }
        catch (XmlRpcException e)
        {
            return "Connection refused";
        }
        catch (Exception e)
        {
            Console.WriteLine("{0}", e.Message);
            return e.Message;
        }
    }