public override void Serialize(IoBuffer output, ISerializationContext context) { output.PutInt16(MaxLots); output.PutInt16(CurrentLots); output.Put(CpuPercentAvg); output.PutInt64(RamUsed); output.PutInt64(RamAvaliable); }
public override void Serialize(IoBuffer output, ISerializationContext context) { output.PutEnum(Type); if (Type == MailRequestType.SEND) { byte[] dat; if (Item == null) { dat = new byte[0]; } else { using (var str = new MemoryStream()) { Item.Save(str); dat = str.ToArray(); } } output.PutInt32(dat.Length); foreach (var b in dat) { output.Put(b); } } else { output.PutInt64(TimestampID); } }
private cTSOValue SerializeValue(uint type, object value) { var result = new cTSOValue(); IoBuffer buffer = null; switch (type) { case 0x48BC841E: if (!(value is sbyte) && !(value is Enum)) { return(null); } result.Type = cTSOValue_sint8; result.Value = new sbyte[] { Convert.ToSByte(value) }; break; case 0x74336731: if (!(value is ushort)) { return(null); } buffer = AbstractVoltronPacket.Allocate(2); buffer.PutUInt16((ushort)value); buffer.Flip(); result.Type = cTSOValue_uint16; result.Value = buffer; break; case 0xF192ECA6: if (!(value is short)) { return(null); } buffer = AbstractVoltronPacket.Allocate(2); buffer.PutInt16((short)value); buffer.Flip(); result.Type = cTSOValue_sint16; result.Value = buffer; break; case 0xE0463A2F: if (!(value is uint)) { return(null); } buffer = AbstractVoltronPacket.Allocate(4); buffer.PutUInt32((uint)value); buffer.Flip(); result.Type = cTSOValue_uint32; result.Value = buffer; break; case 0xA0587098: if (!(value is int)) { return(null); } buffer = AbstractVoltronPacket.Allocate(4); buffer.PutInt32((int)value); buffer.Flip(); result.Type = cTSOValue_sint32; result.Value = buffer; break; case 0x385070C9: if (!(value is ulong)) { return(null); } buffer = AbstractVoltronPacket.Allocate(8); buffer.PutUInt64((ulong)value); buffer.Flip(); result.Type = cTSOValue_uint64; result.Value = buffer; break; case 0x90D315F7: if (!(value is long)) { return(null); } buffer = AbstractVoltronPacket.Allocate(8); buffer.PutInt64((long)value); buffer.Flip(); result.Type = cTSOValue_sint64; result.Value = buffer; break; default: //It may be a struct var _struct = Format.Structs.FirstOrDefault(x => x.ID == type); if (_struct != null) { var body = new cITSOProperty(); body.StructType = _struct.ID; body.StructFields = new List <cITSOField>(); foreach (var field in _struct.Fields) { object fieldValue = GetFieldValue(value, field.Name); if (fieldValue == null) { continue; } body.StructFields.Add(new cITSOField { ID = field.ID, Value = SerializeValue(field.TypeID, fieldValue) }); } result.Type = cTSOValue_property; result.Value = body; return(result); } return(null); } return(result); }
public static void PutUInt64(this IoBuffer buffer, ulong value) { buffer.PutInt64((long)value); }
static void Main(string[] args) { IoConnector connector = new AsyncDatagramConnector(); connector.ExceptionCaught += (s, e) => { Console.WriteLine(e.Exception); }; connector.MessageReceived += (s, e) => { Console.WriteLine("Session recv..."); }; connector.MessageSent += (s, e) => { Console.WriteLine("Session sent..."); }; connector.SessionCreated += (s, e) => { Console.WriteLine("Session created..."); }; connector.SessionOpened += (s, e) => { Console.WriteLine("Session opened..."); }; connector.SessionClosed += (s, e) => { Console.WriteLine("Session closed..."); }; connector.SessionIdle += (s, e) => { Console.WriteLine("Session idle..."); }; IConnectFuture connFuture = connector.Connect(new IPEndPoint(IPAddress.Loopback, MemoryMonitor.port)); connFuture.Await(); connFuture.Complete += (s, e) => { IConnectFuture f = (IConnectFuture)e.Future; if (f.Connected) { Console.WriteLine("...connected"); IoSession session = f.Session; for (int i = 0; i < 30; i++) { Int64 memory = GC.GetTotalMemory(false); IoBuffer buffer = IoBuffer.Allocate(8); buffer.PutInt64(memory); buffer.Flip(); session.Write(buffer); try { Thread.Sleep(1000); } catch (ThreadInterruptedException) { break; } } } else { Console.WriteLine("Not connected...exiting"); } }; Console.ReadLine(); }