public static TempData Decode(ulong target, byte[] data) { G2Header root = new G2Header(data); G2Protocol.ReadPacket(root); if (root.Name != TempPacket.Data) { return(null); } TempData temp = new TempData(target); G2Header child = new G2Header(root.Data); while (G2Protocol.ReadNextChild(root, child) == G2ReadResult.PACKET_GOOD) { if (!G2Protocol.ReadPayload(child)) { continue; } switch (child.Name) { case Packet_TTL: temp.TTL = CompactNum.ToInt32(child.Data, child.PayloadPos, child.PayloadSize); break; case Packet_Data: temp.Data = Utilities.ExtractBytes(child.Data, child.PayloadPos, child.PayloadSize); break; } } return(temp); }
public static PostInfo Decode(G2Header root) { PostInfo info = new PostInfo(); G2Header child = new G2Header(root.Data); while (G2Protocol.ReadNextChild(root, child) == G2ReadResult.PACKET_GOOD) { if (!G2Protocol.ReadPayload(child)) { continue; } switch (child.Name) { case Packet_Subject: info.Subject = UTF8Encoding.UTF8.GetString(child.Data, child.PayloadPos, child.PayloadSize); break; case Packet_Format: info.Format = (TextFormat)CompactNum.ToInt32(child.Data, child.PayloadPos, child.PayloadSize); break; case Packet_Quip: info.Quip = UTF8Encoding.UTF8.GetString(child.Data, child.PayloadPos, child.PayloadSize); break; case Packet_Unique: info.Unique = BitConverter.ToInt32(child.Data, child.PayloadPos); break; } } return(info); }
public static AudioPacket Decode(G2Header root) { AudioPacket packet = new AudioPacket(); if (G2Protocol.ReadPayload(root)) { packet.Audio = Utilities.ExtractBytes(root.Data, root.PayloadPos, root.PayloadSize); } G2Protocol.ResetPacket(root); G2Header child = new G2Header(root.Data); while (G2Protocol.ReadNextChild(root, child) == G2ReadResult.PACKET_GOOD) { if (!G2Protocol.ReadPayload(child)) { continue; } switch (child.Name) { case Packet_FrameSize: packet.FrameSize = CompactNum.ToInt32(child.Data, child.PayloadPos, child.PayloadSize); break; } } return(packet); }
public static MessageData Decode(G2Header root) { MessageData msg = new MessageData(); G2Header child = new G2Header(root.Data); while (G2Protocol.ReadNextChild(root, child) == G2ReadResult.PACKET_GOOD) { if (!G2Protocol.ReadPayload(child)) { continue; } switch (child.Name) { case Packet_Text: msg.Text = UTF8Encoding.UTF8.GetString(child.Data, child.PayloadPos, child.PayloadSize); break; case Packet_Format: msg.Format = (TextFormat)CompactNum.ToInt32(child.Data, child.PayloadPos, child.PayloadSize); break; case Packet_TargetID: msg.TargetID = BitConverter.ToUInt64(child.Data, child.PayloadPos); break; } } return(msg); }
public static TransferPing Decode(G2Header root) { TransferPing ping = new TransferPing(); G2Header child = new G2Header(root.Data); while (G2Protocol.ReadNextChild(root, child) == G2ReadResult.PACKET_GOOD) { if (child.Name == Packet_RequestInfo) { ping.RequestInfo = true; } if (child.Name == Packet_RequestAlts) { ping.RequestAlts = true; } if (child.Name == Packet_BitfieldUpdated) { ping.BitfieldUpdated = true; } if (!G2Protocol.ReadPayload(child)) { continue; } switch (child.Name) { case Packet_Target: ping.Target = BitConverter.ToUInt64(child.Data, child.PayloadPos); break; case Packet_Details: ping.Details = FileDetails.Decode(Utilities.ExtractBytes(child.Data, child.PayloadPos, child.PayloadSize)); break; case Packet_Status: ping.Status = (TransferStatus)BitConverter.ToInt32(child.Data, child.PayloadPos); break; case Packet_MissingDepth: ping.MissingDepth = CompactNum.ToInt32(child.Data, child.PayloadPos, child.PayloadSize); break; } } return(ping); }
public static TransferPartial Decode(G2Header root) { TransferPartial partial = new TransferPartial(); G2Header child = new G2Header(root.Data); while (G2Protocol.ReadNextChild(root, child) == G2ReadResult.PACKET_GOOD) { if (!G2Protocol.ReadPayload(child)) { continue; } switch (child.Name) { case Packet_Created: partial.Created = DateTime.FromBinary(BitConverter.ToInt64(child.Data, child.PayloadPos)); break; case Packet_Details: partial.Details = FileDetails.Decode(Utilities.ExtractBytes(child.Data, child.PayloadPos, child.PayloadSize)); break; case Packet_Target: partial.Target = BitConverter.ToUInt64(child.Data, child.PayloadPos); break; case Packet_BitCount: partial.BitCount = CompactNum.ToInt32(child.Data, child.PayloadPos, child.PayloadSize); break; case Packet_Bitfield: partial.Bitfield = Utilities.ToBitArray(Utilities.ExtractBytes(child.Data, child.PayloadPos, child.PayloadSize), partial.BitCount); break; case Packet_InternalSize: partial.InternalSize = CompactNum.ToInt64(child.Data, child.PayloadPos, child.PayloadSize); break; case Packet_ChunkSize: partial.ChunkSize = CompactNum.ToInt32(child.Data, child.PayloadPos, child.PayloadSize); break; } } return(partial); }
public static MailInfo Decode(G2Header root) { MailInfo info = new MailInfo(); G2Header child = new G2Header(root.Data); while (G2Protocol.ReadNextChild(root, child) == G2ReadResult.PACKET_GOOD) { if (!G2Protocol.ReadPayload(child)) { continue; } switch (child.Name) { case Packet_Subject: info.Subject = UTF8Encoding.UTF8.GetString(child.Data, child.PayloadPos, child.PayloadSize); break; case Packet_Format: info.Format = (TextFormat)CompactNum.ToInt32(child.Data, child.PayloadPos, child.PayloadSize); break; case Packet_Quip: info.Quip = UTF8Encoding.UTF8.GetString(child.Data, child.PayloadPos, child.PayloadSize); break; case Packet_Date: info.Date = DateTime.FromBinary(BitConverter.ToInt64(child.Data, child.PayloadPos)); break; case Packet_Attachments: info.Attachments = BitConverter.ToBoolean(child.Data, child.PayloadPos); break; case Packet_Unique: info.Unique = Utilities.ExtractBytes(child.Data, child.PayloadPos, child.PayloadSize); break; } } return(info); }
public static ChatText Decode(G2Header root) { ChatText chat = new ChatText(); G2Protocol.ResetPacket(root); G2Header child = new G2Header(root.Data); while (G2Protocol.ReadNextChild(root, child) == G2ReadResult.PACKET_GOOD) { if (!G2Protocol.ReadPayload(child)) { continue; } switch (child.Name) { case Packet_ID: chat.ProjectID = BitConverter.ToUInt32(child.Data, child.PayloadPos); break; case Packet_Kind: chat.Kind = (RoomKind)BitConverter.ToUInt32(child.Data, child.PayloadPos); break; case Packet_Text: chat.Text = UTF8Encoding.UTF8.GetString(child.Data, child.PayloadPos, child.PayloadSize); break; case Packet_Format: chat.Format = (TextFormat)CompactNum.ToInt32(child.Data, child.PayloadPos, child.PayloadSize); break; case Packet_RoomID: chat.RoomID = BitConverter.ToUInt64(child.Data, child.PayloadPos); break; } } return(chat); }
public static TransferRequest Decode(G2Header root) { TransferRequest tr = new TransferRequest(); G2Header child = new G2Header(root.Data); while (G2Protocol.ReadNextChild(root, child) == G2ReadResult.PACKET_GOOD) { if (child.Name == Packet_GetBitfield) { tr.GetBitfield = true; } if (!G2Protocol.ReadPayload(child)) { continue; } switch (child.Name) { case Packet_FileID: tr.FileID = BitConverter.ToUInt64(child.Data, child.PayloadPos); break; case Packet_ChunkIndex: tr.ChunkIndex = CompactNum.ToInt32(child.Data, child.PayloadPos, child.PayloadSize); break; case Packet_StartByte: tr.StartByte = CompactNum.ToInt64(child.Data, child.PayloadPos, child.PayloadSize); break; case Packet_EndByte: tr.EndByte = CompactNum.ToInt64(child.Data, child.PayloadPos, child.PayloadSize); break; } } return(tr); }
public static TransferData Decode(G2Header root) { TransferData td = new TransferData(); if (G2Protocol.ReadPayload(root)) { td.Block = Utilities.ExtractBytes(root.Data, root.PayloadPos, root.PayloadSize); } G2Protocol.ResetPacket(root); G2Header child = new G2Header(root.Data); while (G2Protocol.ReadNextChild(root, child) == G2ReadResult.PACKET_GOOD) { if (!G2Protocol.ReadPayload(child)) { continue; } switch (child.Name) { case Packet_FileID: td.FileID = BitConverter.ToUInt64(child.Data, child.PayloadPos); break; case Packet_StartByte: td.StartByte = CompactNum.ToInt64(child.Data, child.PayloadPos, child.PayloadSize); break; case Packet_Index: td.Index = CompactNum.ToInt32(child.Data, child.PayloadPos, child.PayloadSize); break; } } return(td); }
public static LocationNotify Decode(G2Header root) { LocationNotify notify = new LocationNotify(); if (G2Protocol.ReadPayload(root)) { notify.SignedLocation = Utilities.ExtractBytes(root.Data, root.PayloadPos, root.PayloadSize); } G2Protocol.ResetPacket(root); G2Header child = new G2Header(root.Data); while (G2Protocol.ReadNextChild(root, child) == G2ReadResult.PACKET_GOOD) { if (child.Name == Packet_GoingOffline) { notify.GoingOffline = true; continue; } if (!G2Protocol.ReadPayload(child)) { continue; } switch (child.Name) { case Packet_Timeout: notify.Timeout = CompactNum.ToInt32(child.Data, child.PayloadPos, child.PayloadSize); break; } } return(notify); }
public static TransferStop Decode(G2Header root) { TransferStop stop = new TransferStop(); G2Header child = new G2Header(root.Data); while (G2Protocol.ReadNextChild(root, child) == G2ReadResult.PACKET_GOOD) { if (child.Name == Packet_Retry) { stop.Retry = true; } if (!G2Protocol.ReadPayload(child)) { continue; } switch (child.Name) { case Packet_FileID: stop.FileID = BitConverter.ToUInt64(child.Data, child.PayloadPos); break; case Packet_StartByte: stop.StartByte = CompactNum.ToInt64(child.Data, child.PayloadPos, child.PayloadSize); break; case Packet_Index: stop.Index = CompactNum.ToInt32(child.Data, child.PayloadPos, child.PayloadSize); break; } } return(stop); }
public static TransferPong Decode(G2Header root) { TransferPong pong = new TransferPong(); G2Header child = new G2Header(root.Data); while (G2Protocol.ReadNextChild(root, child) == G2ReadResult.PACKET_GOOD) { if (child.Name == Packet_Error) { pong.Error = true; } if (!G2Protocol.ReadPayload(child)) { continue; } switch (child.Name) { case Packet_FileID: pong.FileID = BitConverter.ToUInt64(child.Data, child.PayloadPos); break; case Packet_Timeout: pong.Timeout = CompactNum.ToInt32(child.Data, child.PayloadPos, child.PayloadSize); break; case Packet_Status: pong.Status = (TransferStatus)CompactNum.ToInt32(child.Data, child.PayloadPos, child.PayloadSize); break; case Packet_InternalSize: pong.InternalSize = CompactNum.ToInt64(child.Data, child.PayloadPos, child.PayloadSize); break; case Packet_ChunkSize: pong.ChunkSize = CompactNum.ToInt32(child.Data, child.PayloadPos, child.PayloadSize); break; case Packet_BitCount: pong.BitCount = CompactNum.ToInt32(child.Data, child.PayloadPos, child.PayloadSize); break; case Packet_AltClient: DhtClient client = DhtClient.FromBytes(child.Data, child.PayloadPos); pong.Alts[client] = new List <DhtAddress>(); G2Protocol.ResetPacket(child); G2Header sub = new G2Header(child.Data); while (G2Protocol.ReadNextChild(child, sub) == G2ReadResult.PACKET_GOOD) { if (G2Protocol.ReadPayload(sub)) { if (sub.Name == Packet_AltAddress) { pong.Alts[client].Add(DhtAddress.ReadPacket(sub)); } } } break; } } return(pong); }