using System; using System.Collections.Generic; using System.Linq; using System.Text; using Ion.Storage; namespace Holo { public class FuseMessage { public int Header; public string Content; private int reader; public string GetPacket { get { return Encoding.encodeB64(Header) + Content; } } public string GetRestContent() { return Content.Substring(reader); } public static FuseMessage Parse(string Packet) { FuseMessage Handler = new FuseMessage(); Handler.reader = 0; Handler.Header = Encoding.decodeB64(Packet.Substring(0, 2)); if (Handler.Header > 2002) throw new Exception("Message ID too high!"); Handler.Content = Packet.Substring(2); return Handler; } public int PopWiredInt() { int value = Encoding.decodeVL64(Content.Substring(reader)); reader += Encoding.encodeVL64(value).Length; return value; } public int PopBase64Int() { int value = Encoding.decodeB64(Content.Substring(reader, 2)); reader += 2; return value; } public int PopBase64Int(int length) { int value = Encoding.decodeB64(Content.Substring(reader, length)); reader += 2; return value; } public bool PopWiredBoolean() { int value = PopWiredInt(); return value == 1 ? true : false; } public bool PopBase64Boolean() { int value = Encoding.decodeB64(Content.Substring(reader, 1)); reader += 1; return value == 1 ? true : false; } public string PopString() { int length = Encoding.decodeB64(Content.Substring(reader, 2)); string value = Content.Substring(reader + 2, length); reader += 2 + length; return value; } } }