public override void Append(BufRef writer) { writer.Write8((byte)(0x80 | (FragmentNumber << 1) | (LastFragment ? 0x01 : 0x00))); writer.Write32(SourceMessage.Header.MessageId); writer.WriteFlip16((ushort)SourceMessageData.Length); writer.Write(SourceMessageData); }
public virtual void Append(BufRef writer) { switch (SourceMessage.Delivery) { case TunnelMessage.DeliveryTypes.Local: writer.Write8((byte)((byte)TunnelMessage.DeliveryTypes.Local | (Fragmented ? 0x08 : 0))); if (Fragmented) { writer.Write32(SourceMessage.Header.MessageId); } writer.WriteFlip16((ushort)SourceMessageData.Length); writer.Write(SourceMessageData); break; case TunnelMessage.DeliveryTypes.Router: writer.Write8((byte)((byte)TunnelMessage.DeliveryTypes.Router | (Fragmented ? 0x08 : 0))); writer.Write(((TunnelMessageRouter)SourceMessage).Destination.Hash); if (Fragmented) { writer.Write32(SourceMessage.Header.MessageId); } writer.WriteFlip16((ushort)SourceMessageData.Length); writer.Write(SourceMessageData); break; case TunnelMessage.DeliveryTypes.Tunnel: writer.Write8((byte)((byte)TunnelMessage.DeliveryTypes.Tunnel | (Fragmented ? 0x08 : 0))); writer.Write32(((TunnelMessageTunnel)SourceMessage).Tunnel); writer.Write(((TunnelMessageTunnel)SourceMessage).Destination.Hash); if (Fragmented) { writer.Write32(SourceMessage.Header.MessageId); } writer.WriteFlip16((ushort)SourceMessageData.Length); writer.Write(SourceMessageData); break; default: throw new NotImplementedException(); } }
public void Write(BufRef dest) { dest.Write32(Id); }