Ejemplo n.º 1
0
        // Called when a ConnectAsync operation completes
        private void ProcessConnect(SocketAsyncEventArgs e)
        {
            if (e.SocketError == SocketError.Success)
            {
                Logger.WriteStr("Successfully connected to the server on " + ((AgentAsyncUserToken)(e.UserToken)).Socket.LocalEndPoint.ToString());
                retryIntervalCurrent = retryIntervalInitial;          // set it to initial value

                //Send authorization info about this client as soon as connection established
                var idata = new IdentificationData();
                OpProcessor.GetInfo(idata);       // fill required data
                var message = new ResponseMessage {
                    Response = idata
                };
                SendMessage(e, WoxalizerAdapter.SerializeToXml(message, TypeResolving.AssemblyResolveHandler));
            }
            else
            {
                int ex = (int)e.SocketError;
                Console.WriteLine("Cannot connect to server " + e.RemoteEndPoint.ToString() + ". Will try again in " + retryIntervalCurrent + " seconds");
                Logger.WriteStr("Cannot connect to server " + e.RemoteEndPoint.ToString() + ". Will try again in " + retryIntervalCurrent + " seconds");
                Logger.WriteStr("   (Exception: " + ex.ToString() + ")");

                Thread.Sleep(retryIntervalCurrent * 1000);
                if (retryIntervalCurrent < retryIntervalMaximum)     //increase interval between reconnects up to retryIntervalMaximum value.
                {
                    retryIntervalCurrent += 5;
                }

                e.SocketError = 0;  //clear Error info and try to connect again
                ((AgentAsyncUserToken)e.UserToken).Socket.ConnectAsync(e);

                return;
            }
        }
Ejemplo n.º 2
0
        protected override void ProcessReceivedMessageRequest(SocketAsyncEventArgs e, RequestMessage message)
        {
            var token = (AgentAsyncUserToken)e.UserToken;

            ResponseMessage responseMsg;

            switch (message.OpCode)
            {
            case (int)EOpCode.IpConfigData:
                var ipdata = new IpConfigData();
                OpProcessor.GetInfo(ipdata, ((IPEndPoint)token.Socket.LocalEndPoint).Address.ToString());           // fill required data
                responseMsg = new ResponseMessage {
                    Response = ipdata
                };
                SendMessage(e, WoxalizerAdapter.SerializeToXml(responseMsg, TypeResolving.AssemblyResolveHandler));
                break;

            case (int)EOpCode.RunProcess:
                RunCompletedStatus result = OpProcessor.StartProcess((RunProcess)message.Request);
                responseMsg = new ResponseMessage {
                    Response = result
                };
                SendMessage(e, WoxalizerAdapter.SerializeToXml(responseMsg, TypeResolving.AssemblyResolveHandler));
                break;

            case (int)EOpCode.OsInfo:
                var os = new OsInfo();
                OpProcessor.GetInfo(os);



                break;

                //    //TODO:  Add all OpCodes...

                break;

            default:
                throw new ArgumentException("WARNING: Got unknown operation code request!");
            }
        }