예제 #1
0
 private void ProcessSync(SynchronizeRequest request)
 {
     if (this.SynchronizeRequested != null)
     {
         this.SynchronizeRequested(request);
     }
 }
예제 #2
0
        private void connection_PacketReceive(object sender, EventArgs <ArraySegment <byte> > e)
        {
            Packet packet = new Packet(e.Value);

            switch (packet.PacketType)
            {
            case PacketType.Initialize:
            {
                InitializeResponse arg = new InitializeResponse(ref packet);
                this.thread.Enqueue(Job.Create <InitializeResponse>(new Action <InitializeResponse>(this.ProcessInitialize), arg));
                return;
            }

            case PacketType.Login:
            {
                LoginResponse arg2 = new LoginResponse(ref packet);
                this.thread.Enqueue(Job.Create <LoginResponse>(new Action <LoginResponse>(this.ProcessLogin), arg2));
                return;
            }

            case PacketType.Logout:
                break;

            case PacketType.Terminate:
            {
                TerminateRequest arg3 = new TerminateRequest(ref packet);
                this.thread.Enqueue(Job.Create <TerminateRequest>(new Action <TerminateRequest>(this.ProcessTerminate), arg3));
                break;
            }

            case PacketType.Message:
            {
                MessageRequest arg4 = new MessageRequest(ref packet);
                this.thread.Enqueue(Job.Create <MessageRequest>(new Action <MessageRequest>(this.ProcessMessage), arg4));
                return;
            }

            case PacketType.Synchronize:
            {
                SynchronizeRequest arg5 = new SynchronizeRequest(ref packet);
                this.thread.Enqueue(Job.Create <SynchronizeRequest>(new Action <SynchronizeRequest>(this.ProcessSync), arg5));
                return;
            }

            default:
                return;
            }
        }
예제 #3
0
        private void connection_SynchronizeRequested(SynchronizeRequest request)
        {
            Dictionary <long, byte> dictionary = new Dictionary <long, byte>();

            Log <CafeAuthService> .Logger.InfoFormat("Processing [{0}] sync request...", request.SessionList.Count);

            if (request.SessionList.Count == 0)
            {
                this.Relogin();
                return;
            }
            foreach (long key in request.SessionList)
            {
                if (!dictionary.ContainsKey(key))
                {
                    dictionary.Add(key, this.SessionDic.ContainsKey(key) ?(byte)1 :(byte)0);
                }
            }
            this.connection.SynchronizeReply(request.IsMonitering, dictionary);
        }
예제 #4
0
            public override async Task <SynchronizeResponse> Synchronize(SynchronizeRequest request,
                                                                         ServerCallContext context)
            {
                this.logger.Info("Got Synchronize");
                this.OnSynchronize?.Invoke(request.PublicEndpoint);
                var result = new SynchronizeResponse()
                {
                    Timestamp = Timestamp.FromDateTime(this.globalConfigurationService.ConfigurationManager.Timestamp
                                                       .ToUniversalTime())
                };

                if (this.globalConfigurationService.ConfigurationManager.Ftp.Host != null)
                {
                    result.Ftp = this.globalConfigurationService.ConfigurationManager.Ftp.ToGrpc();
                }

                if (this.globalConfigurationService.ConfigurationManager.Database.Connection.Host != null)
                {
                    result.Database = this.globalConfigurationService.ConfigurationManager.Database.ToGrpc();
                }
                return(await Task.FromResult(result));
            }