private void SendHandshakeRequest(bool isReconnection) { HandSankeReq req = new HandSankeReq(); req.ClientType = clientType; req.ApiVersion = APIVersion; if (isReconnection) { req.ReconnectToken = this.sessionToken; } else { req.ReconnectToken = null; } this.client.Request(req); }
public void Encode(Remoting.Channel ch, object message, ByteArray output) { ByteArray data = new ByteArray(); Dataoutput binOutput = new BinaryDataOutput(data); byte pType = 0, commpressed = 0; if (message is HandSankeReq) { pType = Packet.FLAG_HANDSNAKE; commpressed = PacketHeader.UNCOMPRESSED; HandSankeReq req = message as HandSankeReq; req.SerializaTo(binOutput); } else if (message is HeartBeatReq) { pType = Packet.FLAG_HEARTBEAT; commpressed = PacketHeader.UNCOMPRESSED; HeartBeatReq req = message as HeartBeatReq; req.SerializaTo(binOutput); } else if (message is Request) { pType = Packet.FLAG_MESSAGE; commpressed = PacketHeader.UNCOMPRESSED; Request req = message as Request; binOutput.WriteInt(req.Id); binOutput.WriteByte(req.Type); binOutput.WriteInt(req.Sequence); binOutput.WriteBool(req.TwoWay); RequestArg content = (RequestArg)req.Content; content.SerializaTo(binOutput); } Dataoutput wholeOutput = new BinaryDataOutput(output); wholeOutput.WriteByte(MAGIC_HIGH); wholeOutput.WriteByte(MAGIC_LOW); wholeOutput.WriteByte(pType); wholeOutput.WriteByte(commpressed); wholeOutput.WriteInt(data.Length); output.WriteBytes(data.Bytes); }