예제 #1
0
        public virtual void StartServer(SocketConfig socketConfig)
        {
            SocketConfig = socketConfig;
            foreach (var module in _moduleManager.ForeachInitializedModule())
            {
                var serverModule = module.Value;
                if (serverModule.ServiceId != ID)
                {
                    continue;
                }
                RpcMethodIds.AddRange(serverModule.RpcMethodIds);
                RpcPacketTypes.AddRange(serverModule.RpcPacketTypes);
            }

            _serverSocket.Start(socketConfig);
        }
예제 #2
0
        public void ClearModule(IModule module)
        {
            if (module == null)
            {
                throw new ArgumentNullException(nameof(module));
            }

            _connectedAction    -= module.Connected;
            _disconnectedAction -= module.Disconnected;
            _acceptAction       -= module.Accepted;

            foreach (var item in module.RpcMethodIds)
            {
                RpcMethodIds.Remove(item);
            }

            foreach (var item in module.RpcPacketTypes)
            {
                RpcPacketTypes.Remove(item);
            }
        }
예제 #3
0
        public virtual void Connect(SocketConfig socketConfig)
        {
            SocketConfig = socketConfig;
            foreach (var module in _moduleManager.ForeachInitializedModule())
            {
                var serverModule = module.Value;
                if (serverModule.ServiceId != ID)
                {
                    continue;
                }
                RpcMethodIds.AddRange(serverModule.RpcMethodIds);
                RpcPacketTypes.AddRange(serverModule.RpcPacketTypes);
            }

            _keys = Ssfi.Security.CreateAesKey();

            using (var writeStream = PoolAllocator <IWriteStream> .GetObject()) {
                writeStream.ShiftRight(_keys.PublicKey);
                _serverSocket.Connect(socketConfig, writeStream);
            }
        }