public override bool SignalInputData(InputStream inputStream, IPEndPoint address)
{
//inputStream.CopyDataTo(OutputBuffer, (int)inputStream.AvaliableByteCounts);
//if (!Connections.ContainsKey(address))
//{
// Connections[address] = new Middle2ServerRTMFPProtocol
// {
// Application = Application,
// LocalEndPoint = address,
// Middle = this,
// ServerEndPoint = new IPEndPoint(IPAddress.Parse("202.109.143.196"), 19352)
// };
// Connections[address].Start();
//}
//Connections[address].EnqueueForOutbound(OutputBuffer);
var reader = inputStream.Reader;
var id = reader.ReadUInt32() ^ reader.ReadUInt32() ^ reader.ReadUInt32();
reader.BaseStream.Position = 4;
var session = id == 0 ? HandShakeSession : Sessions.ContainsKey(id) ? Sessions[id] : null;
if (session == null)
{
Debug.WriteLine($"unknown session {id}");
FarProtocol.InputBuffer.Recycle(true);
return true;
}
session.Decode(reader);
if (!session.Checked)
{
session.Checked = true;
var pCookieComputing = session.Peer.GetUserState<CookieComputing>();
HandShakeSession.CommitCookie(pCookieComputing.Value);
}
//reader.Read24();
//id = reader.ReadByte();
//Logger.Debug("{0:X}", id);
session.SetEndPoint(address);
lock (session.OutputBuffer)
{
session.PacketHandler(reader);
}
FarProtocol.InputBuffer.Recycle(true);
return true;
}