예제 #1
0
 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);
 }
예제 #2
0
        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();
            }
        }
예제 #3
0
 public void Write(BufRef dest)
 {
     dest.Write32(Id);
 }