예제 #1
0
        public bool Handle(byte[] handshakeMsg, int length, Socket socket, object state)
        {
            socket.SetSocketOption(SocketOptionLevel.Tcp, SocketOptionName.NoDelay, true);

            var msg = Message.CreateMessage(handshakeMsg) as HandshakeMessage;
            ApplicationUpdateService service;

            if ((msg.TransmitOption & TransmitOption.Session) != TransmitOption.None)
            {
                if (sessionServices.ContainsKey(msg.SessionId))
                {
                    service = sessionServices[msg.SessionId];
                }
                else
                {
                    service          = new ApplicationUpdateService(socket);
                    service.OnClose += RemoveFromSession;
                    sessionServices.Add(msg.SessionId, service);
                }
            }
            else
            {
                service = new ApplicationUpdateService(socket);
            }

            if (msg.Direction == Direction.Upload)
            {
                service.Upload(msg);
            }
            else
            {
                service.Download(msg);
            }
            return(true);
        }
        public bool Handle(byte[] handshakeMsg, int length, Socket socket, object state)
        {
            socket.SetSocketOption(SocketOptionLevel.Tcp, SocketOptionName.NoDelay, true);

            var msg = Message.CreateMessage(handshakeMsg) as HandshakeMessage;
            ApplicationUpdateService service;
            if ((msg.TransmitOption & TransmitOption.Session) != TransmitOption.None)
            {
                if (sessionServices.ContainsKey(msg.SessionId))
                {
                    service = sessionServices[msg.SessionId];
                }
                else
                {
                    service = new ApplicationUpdateService(socket);
                    service.OnClose += RemoveFromSession;
                    sessionServices.Add(msg.SessionId, service);
                }
            }
            else
            {
                service = new ApplicationUpdateService(socket);
            }

            if (msg.Direction == Direction.Upload)
                service.Upload(msg);
            else
                service.Download(msg);
            return true;
        }