public ShamanClientFactory() { _logger = new ConsoleLogger("C", LogLevel.Error | LogLevel.Info); _taskSchedulerFactory = new TaskSchedulerFactory(_logger); _serializer = new BinarySerializer(); _requestSender = new TestClientHttpSender(_logger, _serializer); _clientPeerListener = new TestClientPeerListener(_logger); _clientPeerConfig = new ClientPeerConfig(); }
public ShamanClientPeer(IShamanLogger logger, ITaskSchedulerFactory taskSchedulerFactory, ISerializer serializer, IRequestSender requestSender, IShamanClientPeerListener listener, IShamanClientPeerConfig config) { _status = ShamanClientStatus.Offline; _shamanMessageHandler = new MessageHandler(logger, serializer); _bundleMessageHandler = new MessageHandler(logger, serializer); _logger = logger; _taskScheduler = taskSchedulerFactory.GetTaskScheduler(); // _serializer.InitializeDefaultSerializers(0, "client"); _clientPeer = new ClientPeer(logger, taskSchedulerFactory, config.MaxPacketSize, config.SendTickMs); _requestSender = requestSender; _listener = listener; _clientPeer.OnDisconnectedFromServer += (reason) => { switch (_status) { case ShamanClientStatus.ConnectingGameServer: case ShamanClientStatus.AuthorizingGameServer: case ShamanClientStatus.JoiningRoom: case ShamanClientStatus.InRoom: case ShamanClientStatus.LeavingRoom: OnDisconnectedFromGameServer?.Invoke(reason); break; case ShamanClientStatus.ConnectingMatchMaking: case ShamanClientStatus.AuthorizingMatchMaking: case ShamanClientStatus.JoiningMatchMaking: case ShamanClientStatus.OnMatchMaking: case ShamanClientStatus.LeavingMatchMaking: OnDisconnectedFromMmServer?.Invoke(reason); break; } OnDisconnected?.Invoke(reason); SetAndReportStatus(ShamanClientStatus.Disconnected, _statusCallback, error: reason.ToString()); ResetState(); }; _pollPackageQueueIntervalMs = config.PollPackageQueueIntervalMs; if (config.StartOtherThreadMessageProcessing) { StartProcessingMessagesLoop(); } }