Example #1
0
 public override void Serialize(IoBuffer output, ISerializationContext context)
 {
     output.PutInt16(MaxLots);
     output.PutInt16(CurrentLots);
     output.Put(CpuPercentAvg);
     output.PutInt64(RamUsed);
     output.PutInt64(RamAvaliable);
 }
Example #2
0
 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);
     }
 }
Example #3
0
        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);
        }
Example #4
0
 public static void PutUInt64(this IoBuffer buffer, ulong value)
 {
     buffer.PutInt64((long)value);
 }
Example #5
0
        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();
        }