コード例 #1
0
ファイル: UnitTest1.cs プロジェクト: yupeiyong/WebProject
        public void TestClientRegister()
        {
            IProtocolBuffer buffer = MessageFactory.MessateToBuffer <Messages.ClientRegister>(BUSINESS_NO, SIM, (m, b) =>
            {
                b.City         = 5;
                b.Color        = 4;
                b.DeviceID     = "abc";
                b.DeviceNumber = "1002";
                b.PlateNumber  = "粤A4XB38";
                b.Provider     = "gdgz";
                b.Province     = 10;
            });

            buffer.Postion = 0;
            IMessage msg = MessageFactory.MessageFromBuffer(buffer);

            Messages.ClientRegister register = msg.GetBody <Messages.ClientRegister>();
            Assert.AreEqual(msg.ID, MessageFactory.GetMessageID <Messages.ClientRegister>());
            Assert.AreEqual(msg.SIM, SIM);
            Assert.AreEqual(msg.BussinessNO, BUSINESS_NO);
            Assert.AreEqual(register.City, 5);
            Assert.AreEqual(register.Color, 4);
            Assert.AreEqual(register.DeviceID, "abc");
            Assert.AreEqual(register.DeviceNumber, "1002");
            Assert.AreEqual(register.PlateNumber, "粤A4XB38");
            Assert.AreEqual(register.Provider, "gdgz");
            Assert.AreEqual(register.Province, 10);
        }
コード例 #2
0
        public void SendCompleted(Express.IServer server, Express.ChannelSendEventArgs e)
        {
            IProtocolBuffer buffer = (IProtocolBuffer)e.Data.Tag;

            ProtocolBufferPool.Default.Push(buffer);
            SaveLogsService.WriteLog("SendCompleted : " + buffer);
        }
コード例 #3
0
ファイル: ProtocolBuffer.cs プロジェクト: ewsq/JT808-4
 public void ReadSubBuffer(IProtocolBuffer buffer, int count)
 {
     Buffer.BlockCopy(mArray, mPostion, buffer.Array, 0, count);
     mPostion += count;
     buffer.SetLength(count);
     buffer.Postion = 0;
 }
コード例 #4
0
        public static Message DecodeMessage(IProtocolBuffer buffer)
        {
            Message msg = new Message();

            msg.Read(buffer);
            return(msg);
        }
コード例 #5
0
        public static Message MessageFromBuffer(IProtocolBuffer buffer)
        {
            var msg = new Message();

            msg.Load(buffer);
            return(msg);
        }
コード例 #6
0
ファイル: UnitTest1.cs プロジェクト: yupeiyong/WebProject
        public void TestClientPostion()
        {
            DateTime        dt     = new DateTime(2016, 12, 23, 13, 50, 50);
            IProtocolBuffer buffer = MessageFactory.MessateToBuffer <Messages.ClientPostion>(BUSINESS_NO, SIM, (m, b) =>
            {
                b.Direction  = 4;
                b.Height     = 5;
                b.Latitude   = 56;
                b.Longitude  = 100;
                b.Speed      = 100;
                b.Status.ACC = true;
                b.Time       = dt;
                b.WarningMark.DisplayTheFault = true;
            });

            buffer.Postion = 0;
            Console.WriteLine(buffer.ToString());
            IMessage msg = MessageFactory.MessageFromBuffer(buffer);

            Messages.ClientPostion postion = msg.GetBody <Messages.ClientPostion>();
            Assert.AreEqual(msg.ID, MessageFactory.GetMessageID <Messages.ClientPostion>());
            Assert.AreEqual(msg.SIM, SIM);
            Assert.AreEqual(msg.BussinessNO, BUSINESS_NO);
            Assert.AreEqual(postion.Direction, 4);
            Assert.AreEqual(postion.Height, 5);
            Assert.AreEqual(postion.Latitude, (uint)56);
            Assert.AreEqual(postion.Longitude, (uint)100);
            Assert.AreEqual(postion.Speed, 100);
            Assert.AreEqual(postion.Status.ACC, true);
            Assert.AreEqual(postion.Time, dt);
            Assert.AreEqual(postion.WarningMark.DisplayTheFault, true);
        }
コード例 #7
0
        public void Save(IProtocolBuffer buffer)
        {
            ushort value = (ushort)(BodyLength & BODY_LENGTH);

            if (CustomHigh)
            {
                value |= CUSTOM_HEIGHT;
            }
            if (CustomLow)
            {
                value |= CUSTOM_LOW;
            }
            if (IsPacket)
            {
                value |= IS_PACKET;
            }
            if (EncryptHigh)
            {
                value |= ENCRYPT_HEIGHT;
            }
            if (EncryptMiddle)
            {
                value |= ENCRYPT_MIDDLE;
            }
            if (EncryptLow)
            {
                value |= ENCRYPT_LOW;
            }
            buffer.Write(value);
        }
コード例 #8
0
        public override object Read(IProtocolBuffer buffer)
        {
            uint           data   = buffer.ReadUInt();
            IBitCustomType result = (IBitCustomType)Activator.CreateInstance(mType);

            result.Load(data);
            return(result);
        }
コード例 #9
0
        public void Load(IProtocolBuffer buffer)
        {
            byte[] data = buffer.Read(2);
            Count = BitConverter.ToUInt16(data, 0);
            Count = BufferUtils.SwapUInt16(Count);

            data  = buffer.Read(2);
            Index = BitConverter.ToUInt16(data, 0);
            Index = BufferUtils.SwapUInt16(Count);
        }
コード例 #10
0
        public void Write(object target, IProtocolBuffer buffer)
        {
            object value = Handler.Get(target);

            if (value == null)
            {
                throw new ProtocolProcessError(string.Format("{0}.{1} value can't be null!", Handler.Property.DeclaringType, Handler.Property.PropertyType));
            }
            ReadWriteHandler.Write(value, buffer);
        }
コード例 #11
0
        public void Write(IProtocolBuffer buffer)
        {
            IProtocolBuffer bodybuffer = null;

            try
            {
                if (Packet != null)
                {
                    Property.IsPacket = true;
                }
                if (Body != null)
                {
                    Serializer serializer = SerializerFactory.Defalut.Get(Body.GetType());
                    if (serializer == null)
                    {
                        throw new ProtocolProcessError(string.Format("{0} serializer not found!", Body));
                    }
                    ID = serializer.MessageType.ID;
                    if (!serializer.MessageType.NoBody)
                    {
                        bodybuffer = ProtocolBufferPool.Default.Pop();
                        serializer.Serialize(Body, bodybuffer);
                        if (bodybuffer.Length > MessageBodyProperty.BODY_LENGTH)
                        {
                            throw new ProtocolProcessError("message body to long!");
                        }
                        Property.BodyLength = (ushort)bodybuffer.Length;
                    }
                }
                buffer.WriteTag();           //write start
                buffer.Write(ID);            //write id
                Property.Write(buffer);      //write body property
                buffer.WriteBCD(SIM);        //write sim
                buffer.Write(No);            //write no
                if (Packet != null)          //write packet
                {
                    Packet.Save(buffer);
                }
                if (bodybuffer != null)      //write body
                {
                    buffer.WriteSubBuffer(bodybuffer);
                }
                byte crc = BufferUtils.GetCRC(buffer.Array, 1, buffer.Length - 1);
                buffer.Write(crc);           //write crc
                buffer.WriteTag();           //write end
            }
            finally
            {
                if (bodybuffer != null)
                {
                    ProtocolBufferPool.Default.Push(bodybuffer);
                }
            }
        }
コード例 #12
0
        public void Load(IProtocolBuffer buffer)
        {
            ushort value = buffer.ReadUInt16();

            CustomHigh    = (CUSTOM_HEIGHT & value) > 0;
            CustomLow     = (CUSTOM_LOW & value) > 0;
            IsPacket      = (IS_PACKET & value) > 0;
            EncryptHigh   = (ENCRYPT_HEIGHT & value) > 0;
            EncryptMiddle = (ENCRYPT_MIDDLE & value) > 0;
            EncryptLow    = (ENCRYPT_LOW & value) > 0;
            BodyLength    = (ushort)(BODY_LENGTH & value);
        }
コード例 #13
0
        public IProtocolBuffer Pop()
        {
            IProtocolBuffer result = null;

            if (!mPool.TryPop(out result))
            {
                result = CreateBuffer();
            }

            result.Reset();
            return(result);
        }
コード例 #14
0
        public override object Read(IProtocolBuffer buffer)
        {
            string value = buffer.ReadBCD(6);
            int    year  = int.Parse("20" + value.Substring(0, 2));
            int    month = int.Parse(value.Substring(2, 2));
            int    day   = int.Parse(value.Substring(4, 2));
            int    hh    = int.Parse(value.Substring(6, 2));
            int    mm    = int.Parse(value.Substring(8, 2));
            int    ss    = int.Parse(value.Substring(10, 2));

            return(new DateTime(year, month, day, hh, mm, ss));
        }
コード例 #15
0
ファイル: UnitTest1.cs プロジェクト: yupeiyong/WebProject
        public void TestClientPing()
        {
            IProtocolBuffer buffer = MessageFactory.MessateToBuffer <Messages.ClientPing>(BUSINESS_NO, SIM, (m, b) =>
            {
            });

            buffer.Postion = 0;
            IMessage msg = MessageFactory.MessageFromBuffer(buffer);

            Messages.ClientPing response = msg.GetBody <Messages.ClientPing>();
            Assert.AreEqual(msg.ID, MessageFactory.GetMessageID <Messages.ClientPing>());
            Assert.AreEqual(msg.SIM, SIM);
            Assert.AreEqual(msg.BussinessNO, BUSINESS_NO);
        }
コード例 #16
0
ファイル: Serializer.cs プロジェクト: ewsq/JT808-4
 public void Serialize(object obj, IProtocolBuffer buffer)
 {
     if (obj is IMessageBody)
     {
         ((IMessageBody)obj).Save(buffer);
     }
     else
     {
         foreach (PropertySerializeHandler item in mProperties)
         {
             item.Write(obj, buffer);
         }
     }
 }
コード例 #17
0
        public static IProtocolBuffer MessateToBuffer <T>(ushort businessNO, string sim, Action <IMessage, T> handler) where T : new()
        {
            IProtocolBuffer buffer = ProtocolBufferPool.Default.Pop();
            Message         msg    = new Message();

            msg.BussinessNO = businessNO;
            msg.SIM         = sim;
            T body = new T();

            msg.Body = body;
            if (handler != null)
            {
                handler(msg, body);
            }
            msg.Save(buffer);
            return(buffer);
        }
コード例 #18
0
ファイル: UnitTest1.cs プロジェクト: yupeiyong/WebProject
        public void TestClientRegisterResponse()
        {
            IProtocolBuffer buffer = MessageFactory.MessateToBuffer <Messages.ClientRegisterResponse>(BUSINESS_NO, SIM, (m, b) =>
            {
                b.BusinessNO = 6;
                b.Result     = 10;
                b.Signature  = "bbqabc";
            });

            buffer.Postion = 0;
            IMessage msg = MessageFactory.MessageFromBuffer(buffer);

            Messages.ClientRegisterResponse response = msg.GetBody <Messages.ClientRegisterResponse>();
            Assert.AreEqual(msg.ID, MessageFactory.GetMessageID <Messages.ClientRegisterResponse>());
            Assert.AreEqual(msg.SIM, SIM);
            Assert.AreEqual(msg.BussinessNO, BUSINESS_NO);
            Assert.AreEqual(response.BusinessNO, 6);
            Assert.AreEqual(response.Result, 10);
            Assert.AreEqual(response.Signature, "bbqabc");
        }
コード例 #19
0
ファイル: UnitTest1.cs プロジェクト: yupeiyong/WebProject
        public void TestCenterResponse()
        {
            IProtocolBuffer buffer = MessageFactory.MessateToBuffer <Messages.CenterResponse>(BUSINESS_NO, SIM, (m, b) =>
            {
                b.BussinessNO = 12;
                b.ResultID    = 5;
                b.Result      = Messages.ResultType.Success;
            });

            buffer.Postion = 0;
            IMessage msg = MessageFactory.MessageFromBuffer(buffer);

            Messages.CenterResponse response = msg.GetBody <Messages.CenterResponse>();
            Assert.AreEqual(msg.ID, MessageFactory.GetMessageID <Messages.CenterResponse>());
            Assert.AreEqual(msg.SIM, SIM);
            Assert.AreEqual(msg.BussinessNO, BUSINESS_NO);
            Assert.AreEqual(response.BussinessNO, 12);
            Assert.AreEqual(response.Result, Messages.ResultType.Success);
            Assert.AreEqual(response.ResultID, 5);
        }
コード例 #20
0
ファイル: UnitTest1.cs プロジェクト: yupeiyong/WebProject
        public void TestMethod1()
        {
            Express.Clients.SyncTcpClient client = new Express.Clients.SyncTcpClient("218.89.49.246", 86);
            var recieve = client.Recieve();
            //Express.Clients.SyncTcpClient client = new Express.Clients.SyncTcpClient("127.0.0.1", 86);
            DateTime        dt     = new DateTime(2018, 06, 26, 11, 33, 50);
            IProtocolBuffer buffer = MessageFactory.MessateToBuffer <ClientPostion>(BUSINESS_NO, SIM, (m, b) =>
            {
                b.Direction  = 4;
                b.Height     = 5;
                b.Latitude   = 56;
                b.Longitude  = 100;
                b.Speed      = 100;
                b.Status.ACC = true;
                b.Time       = dt;
                b.WarningMark.DisplayTheFault = true;
            });

            client.Send(buffer.Array, 0, buffer.Length);
            Console.WriteLine("OK");
        }
コード例 #21
0
ファイル: Program.cs プロジェクト: zyanam/Beetle.JT808
        public void Receive(Express.IServer server, Express.ChannelReceiveEventArgs e)
        {
            IProtocolBuffer protocolbuffer;

            if (e.Channel.Tag == null)
            {
                protocolbuffer = ProtocolBufferPool.Default.Pop();
                e.Channel.Tag  = protocolbuffer;
            }
            else
            {
                protocolbuffer = (IProtocolBuffer)e.Channel.Tag;
            }
            int offset = 0; int count = e.Data.Count;

            while (count > 0)
            {
                int readcout = protocolbuffer.Import(e.Data.Array, 0, count);
                if (readcout > 0)
                {
                    Message message = MessageFactory.MessageFromBuffer(protocolbuffer);
                    ProtocolBufferPool.Default.Push(protocolbuffer);
                    protocolbuffer = ProtocolBufferPool.Default.Pop();
                    e.Channel.Tag  = protocolbuffer;
                    IProtocolBuffer result = MessageFactory.MessateToBuffer <CenterResponse>(
                        message.BussinessNO, message.SIM, (m, b) =>
                    {
                        b.BussinessNO = message.BussinessNO;
                        b.ResultID    = message.ID;
                        b.Result      = ResultType.Success;
                    });
                    Beetle.Express.Data data = new Express.Data(result.Array, result.Length);
                    data.Tag = result;
                    server.Send(data, e.Channel);
                    offset += readcout;
                    count  -= readcout;
                }
            }
        }
コード例 #22
0
        public void Read(IProtocolBuffer buffer)
        {
            //byte crc = Core.GetCRC(buffer.Array, 1, buffer.Length - 3);
            //CRC = buffer.Array[buffer.Length - 2];
            //if(CRC != crc)
            //	throw new ProtocolProcessError("message check CRC error!");

            buffer.Read();                          //read start      标识位
            ID = buffer.ReadUInt16();               //read id         消息 ID
            Property.Read(buffer);                  //read property   消息体属性
            SIM = buffer.ReadBCD(6);                //read sim        终端手机号
            No  = buffer.ReadUInt16();              //read no 消息流水号
            if (Property.IsPacket)                  //read packet     消息包封装项
            {
                Packet = new PacketInfo();
                Packet.Load(buffer);
            }
            if (Property.BodyLength > 0) //read body      消息体
            {
                IProtocolBuffer bodybuffer = ProtocolBufferPool.Default.Pop();
                try
                {
                    buffer.ReadSubBuffer(bodybuffer, Property.BodyLength);
                    Serializer serializer = SerializerFactory.Defalut.Get(ID);
                    if (serializer != null)
                    {
                        Body = serializer.CreateObject();
                        serializer.Deserialize(Body, bodybuffer);
                    }
                }
                finally
                {
                    ProtocolBufferPool.Default.Push(bodybuffer);
                }
            }
            CRC = buffer.Read();             //read crc  检验码
            buffer.Read();                   //read end  标识位
        }
コード例 #23
0
ファイル: Message.cs プロジェクト: zyanam/Beetle.JT808
        public void Load(IProtocolBuffer buffer)
        {
            byte crc = Core.GetCRC(buffer.Array, 1, buffer.Length - 3);

            this.CRC = buffer.Array[buffer.Length - 2];
            if (this.CRC != crc)
            {
                throw new ProtocolProcessError("message check CRC error!");
            }
            buffer.Read();                     //read start
            ID = buffer.ReadUInt16();          //read id
            Property.Load(buffer);             //read property
            SIM         = buffer.ReadBCD(6);   //read sim
            BussinessNO = buffer.ReadUInt16(); //read no
            if (Property.IsPacket)             //read packet
            {
                Packet = new PacketInfo();
                Packet.Load(buffer);
            }
            if (Property.BodyLength > 0) //read body
            {
                IProtocolBuffer bodybuffer = ProtocolBufferPool.Default.Pop();
                try
                {
                    buffer.ReadSubBuffer(bodybuffer, Property.BodyLength);
                    Serializer serializer = SerializerFactory.Defalut.Get(ID);
                    Body = serializer.CreateObject();
                    serializer.Deserialize(Body, bodybuffer);
                }
                finally
                {
                    ProtocolBufferPool.Default.Push(bodybuffer);
                }
            }
            this.CRC = buffer.Read(); //read crc
            buffer.Read();            //read end
        }
コード例 #24
0
 public override object Read(IProtocolBuffer buffer)
 {
     return(buffer.ReadUInt());
 }
コード例 #25
0
 public override void Write(object value, IProtocolBuffer buffer)
 {
     buffer.WriteASCII((string)value, Length);
 }
コード例 #26
0
 public override object Read(IProtocolBuffer buffer)
 {
     return(buffer.ReadASCII(Length).TrimStart(' '));
 }
コード例 #27
0
 public override object Read(IProtocolBuffer buffer)
 {
     return(buffer.Read(Length));
 }
コード例 #28
0
        public override void Write(object value, IProtocolBuffer buffer)
        {
            uint data = (uint)((IBitCustomType)value).Save();

            buffer.Write(data);
        }
コード例 #29
0
        public override void Write(object value, IProtocolBuffer buffer)
        {
            string time = ((DateTime)value).ToString("yyMMddHHmmss");

            buffer.WriteBCD(time);
        }
コード例 #30
0
 public override void Write(object value, IProtocolBuffer buffer)
 {
     buffer.Write((uint)value);
 }