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); }
public void SendCompleted(Express.IServer server, Express.ChannelSendEventArgs e) { IProtocolBuffer buffer = (IProtocolBuffer)e.Data.Tag; ProtocolBufferPool.Default.Push(buffer); SaveLogsService.WriteLog("SendCompleted : " + buffer); }
public void ReadSubBuffer(IProtocolBuffer buffer, int count) { Buffer.BlockCopy(mArray, mPostion, buffer.Array, 0, count); mPostion += count; buffer.SetLength(count); buffer.Postion = 0; }
public static Message DecodeMessage(IProtocolBuffer buffer) { Message msg = new Message(); msg.Read(buffer); return(msg); }
public static Message MessageFromBuffer(IProtocolBuffer buffer) { var msg = new Message(); msg.Load(buffer); return(msg); }
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); }
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); }
public override object Read(IProtocolBuffer buffer) { uint data = buffer.ReadUInt(); IBitCustomType result = (IBitCustomType)Activator.CreateInstance(mType); result.Load(data); return(result); }
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); }
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); }
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); } } }
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); }
public IProtocolBuffer Pop() { IProtocolBuffer result = null; if (!mPool.TryPop(out result)) { result = CreateBuffer(); } result.Reset(); return(result); }
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)); }
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); }
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); } } }
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); }
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"); }
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); }
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"); }
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; } } }
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 标识位 }
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 }
public override object Read(IProtocolBuffer buffer) { return(buffer.ReadUInt()); }
public override void Write(object value, IProtocolBuffer buffer) { buffer.WriteASCII((string)value, Length); }
public override object Read(IProtocolBuffer buffer) { return(buffer.ReadASCII(Length).TrimStart(' ')); }
public override object Read(IProtocolBuffer buffer) { return(buffer.Read(Length)); }
public override void Write(object value, IProtocolBuffer buffer) { uint data = (uint)((IBitCustomType)value).Save(); buffer.Write(data); }
public override void Write(object value, IProtocolBuffer buffer) { string time = ((DateTime)value).ToString("yyMMddHHmmss"); buffer.WriteBCD(time); }
public override void Write(object value, IProtocolBuffer buffer) { buffer.Write((uint)value); }