示例#1
0
        private IncomingPayloadHandler ProcessIncomingPayload(IncomingPayloadHandler payload)
        {
            payload.AuthKey = new byte[4];
            payload.Header  = new byte[4];

            //Payload Contains Authkey, save it
            if (payload.RawPayload.Length == (Properties.TS3SRV_WEBLIST_PROTOCOL_HEADERLEN + Properties.TS3SRV_WEBLIST_PROTOCOL_AUTHKEYLEN))
            {
                Array.Copy(payload.RawPayload, Properties.TS3SRV_WEBLIST_PROTOCOL_HEADERLEN, payload.AuthKey, 0, payload.RawPayload.Length - Properties.TS3SRV_WEBLIST_PROTOCOL_HEADERLEN);
                TS3SRV_WEBLIST_AUTHKEY = payload.AuthKey;
                awaitingAuthKey        = false;
                Logger.Log(LogLevel.Info, "Got Authkey, saving it. ");
                Console.WriteLine("GOT AUTH KEY");
            }

            Array.Copy(payload.RawPayload, 0, payload.Header, 0, Properties.TS3SRV_WEBLIST_PROTOCOL_HEADERLEN);

            if (payload.RawPayload.Length == Properties.TS3SRV_WEBLIST_PROTOCOL_HEADERLEN + 1)
            {
                var responseCode = (ResponseStatus)payload.RawPayload[payload.RawPayload.Length - 1];
                Console.WriteLine("Got response: " + responseCode);
                if (responseCode.Equals(ResponseStatus.Ok))
                {
                    //Logger.Log(LogLevel.Info, "Successfully added server to the serverlist: " + responseCode);
                    Console.WriteLine("Successfully added server to the serverlist: " + responseCode);
                    TS3SRV_WEBLIST_SEQUENCEID++;
                    _timer.Interval = 600000;
                    _timer.Stop();
                    _timer.Start();
                }
                else if (responseCode.Equals(ResponseStatus.Busy))
                {
                    _timer.Interval = 60000;
                    _timer.Stop();
                    _timer.Start();
                }
            }

            //Ignore first header byte as it's not needed
            payload.SequenceId = BitConverter.ToUInt16(new byte[2] {
                payload.Header[2], payload.Header[1]
            }, 0);
            payload.PType = payload.Header[3];

            TS3SRV_WEBLIST_SEQUENCEID = payload.SequenceId;
            return(payload);
        }
示例#2
0
        private void OnIncoming(IncomingPayloadHandler payload)
        {
            payload = ProcessIncomingPayload(payload);

            //TODO
        }