void ProcessIdentity(Stream stream, bool byteswap = false)
{
byte[] buffer = new byte[8 * 1024];
int bytesRead = stream.Read(buffer, 0, buffer.Length);
MemoryStream mem = new MemoryStream(buffer);
BinaryReader br = new BinaryReader(mem);
byte clientType = 0;
mVersion = br.ReadByte();
if( mVersion > 0 )
clientType = br.ReadByte();
mStatusClient = ((clientType & 0x80) == 0x80);
clientType &= 0x7F;
switch (clientType)
{
case 0: mType = Type.Javascript; break;
case 1: mType = Type.CSharp; break;
case 2: mType = Type.Cpp; break;
default: mType = Type.Unknown; break;
}
mDesiredHashes = br.ReadUInt32();
if (byteswap)
mDesiredHashes = (uint)IPAddress.NetworkToHostOrder((int)mDesiredHashes);
mAgent = ReadStr(br);
mPlatform = ReadStr(br);
mLocation = ReadStr(br);
if (mVersion == 1)
mState = State.Ready;
else
mState = State.Old;
}