public void Send(ushort tokenId, Packet packet, RPCHandler callback) { TCPUserToken token = this._tokenManager.Get(tokenId); this._rpcManager.Accept(token, packet, callback); packet.OnSend(); token?.Send(packet); }
public void Send(IEnumerable <ushort> tokenIds, Packet packet) { packet.OnSend(); byte[] data = NetworkHelper.EncodePacket(packet); foreach (ushort tokenId in tokenIds) { TCPUserToken token = this._tokenManager.Get(tokenId); token?.Send(data); } }
private void ProcessReceiveDatas() { this._receivedDatas.Switch(); while (!this._receivedDatas.isEmpty) { ReceivedData receivedData = this._receivedDatas.Pop(); switch (receivedData.type) { case ReceivedData.Type.Accept: { TCPUserToken newToken = this._tokenManager.Create(); newToken.OnSpawn(this, receivedData.conn, TimeUtils.utcTime); this.OnSocketEvent?.Invoke(new SocketEvent(SocketEvent.Type.Accept, $"Client connection accepted, remote endpoint: {receivedData.conn.RemoteEndPoint}", SocketError.Success, newToken)); this.StartReceive(newToken); newToken.Send(new PacketAccept(newToken.id)); } break; case ReceivedData.Type.Receive: { TCPUserToken token = ( TCPUserToken )receivedData.token; token.ProcessData(packet => { if (packet.module == NetworkConfig.INTERNAL_MODULE && packet.command == 0) { token.Send(new PacketHeartBeat((( PacketHeartBeat )packet).localTime)); } else { this._rpcManager.Invoke(token, packet); this.OnSocketEvent?.Invoke(new SocketEvent(SocketEvent.Type.Receive, packet, token)); } }); } break; } } }