protected void StreamReceived(NetworkingPlayer sender, BMSByte bytes)
{
if (TrackBandwidth)
BandwidthIn += (ulong)bytes.Size;
lock (tmp)
{
bytes.MoveStartIndex(1);
readStream.Reset();
if (base.ProcessReceivedData(sender, bytes, bytes[0]))
return;
// TODO: Not needed after initialization
readStream.SetProtocolType(Networking.ProtocolType.TCP);
if (readStream.Consume(this, sender, bytes) == null)
return;
// Do not process player because it is processed through the listener
if (readStream.identifierType == NetworkingStream.IdentifierType.Player)
{
if (!Connected)
OnConnected();
return;
}
if (readStream.Ready)
{
// TODO: These need to be done better since there are many of them
if (readStream.Bytes.Size < 22)
{
try
{
if (ObjectMapper.Compare<string>(readStream, "update"))
UpdateNewPlayer(sender);
if (ObjectMapper.Compare<string>(readStream, "disconnect"))
{
// TODO: If this eventually sends something to the player they will not exist
Disconnect(sender);
return;
}
}
catch
{
throw new NetworkException(12, "Mal-formed defalut communication");
}
}
}
if (ReadStream(sender, readStream) && IsServer)
RelayStream(readStream);
DataRead(sender, readStream);
}
}