Ejemplo n.º 1
0
        //--------------------------------------------------
        //Serializer ProtoBufMsg and send 2014-1-14 zxbx
        public void OnProtoBufDataWrite(ProtoBuf.IExtensible message)
        {
            int                   iHeaderLen = 0;
            MemoryStream          stream     = new MemoryStream();
            ProtoBufPackageHeader header     = new ProtoBufPackageHeader();

            iHeaderLen = header.ReturnHeaderLen();
            byte[] headbuffer = new byte[iHeaderLen];
            stream.Write(headbuffer, 0, iHeaderLen);
            int messagename_length = this.protoBufserializer.Serialize(message, stream);

            header.MessageLength     = (int)stream.Length; //effective data len
            header.MessageType       = (byte)6;
            header.MessageTypeLength = messagename_length;

            //ByteArray byteArray = new ByteArray(stream.GetBuffer());

            byte[]    byteT     = new byte[header.MessageLength];
            ByteArray byteArray = new ByteArray(byteT);
            ByteArray byteTcp   = new ByteArray(stream.GetBuffer());

            Buffer.BlockCopy(byteTcp.Bytes, 0, byteArray.Bytes, 0, header.MessageLength);
            //UnityEngine.Debug.Log("Message Buffer with empty header-->" + DefaultObjectDumpFormatter.HexDump(byteArray));

            this.bitSwarm.ThreadManager.EnqueueSend(new WriteProtoBufBinaryDataDelegate(this.WriteProtoBufBinaryData), header, byteArray);
        }
Ejemplo n.º 2
0
        //---------------------------------------------

        private void WriteProtoBufBinaryData(ProtoBufPackageHeader header, ByteArray binData)
        {
            ByteArray byteArray = new ByteArray();

            byteArray.WriteBytes(binData.Bytes);
            header.WriteTo(byteArray.Bytes, 0);
            this.WriteTCP(byteArray);
        }
Ejemplo n.º 3
0
        private void ProcessOutProtoBufItem(Hashtable item)
        {
            object obj = item["callback"];
            WriteProtoBufBinaryDataDelegate writeBinaryDataDelegate = obj as WriteProtoBufBinaryDataDelegate;

            if (writeBinaryDataDelegate != null)
            {
                ByteArray             binData = item["data"] as ByteArray;
                ProtoBufPackageHeader header  = item["header"] as ProtoBufPackageHeader;
                writeBinaryDataDelegate(header, binData);
            }
        }
Ejemplo n.º 4
0
        //----------------------------------------------
        //Test data packet only header zxb 2014-1-20
        public void OnProtoBufDataWriteOnlyHeaderTest(ProtoBuf.IExtensible message)
        {
            int                   iHeaderLen = 0;
            MemoryStream          stream     = new MemoryStream();
            ProtoBufPackageHeader header     = new ProtoBufPackageHeader();

            iHeaderLen = header.ReturnHeaderLen();
            byte[] headbuffer = new byte[iHeaderLen];
            stream.Write(headbuffer, 0, iHeaderLen);

            header.MessageLength     = 47;
            header.MessageType       = (byte)6;
            header.MessageTypeLength = 24;
            ByteArray byteArray = new ByteArray(stream.GetBuffer());

            this.bitSwarm.ThreadManager.EnqueueSend(new WriteProtoBufBinaryDataDelegate(this.WriteProtoBufBinaryData), header, byteArray);
        }
Ejemplo n.º 5
0
        public void EnqueueSend(WriteProtoBufBinaryDataDelegate callback, ProtoBufPackageHeader header, ByteArray data)
        {
            Hashtable hashtable = new Hashtable();

            hashtable["callback"] = callback;
            hashtable["header"]   = header;
            hashtable["data"]     = data;
            object obj = this.outQueueLocker;

            Monitor.Enter(obj);
            try
            {
                this.outThreadQueue.Enqueue(hashtable);
                this.outHasQueuedItems = true;
            }
            finally
            {
                Monitor.Exit(obj);
            }
        }