コード例 #1
0
        /// <summary>
        /// Converts this extension to a byte array
        /// </summary>
        /// <returns>array of bytes</returns>
        internal override void ToBytes(SlpWriter writer)
        {
            writer.Write((short)Id);

            var tmp = writer.GetBytes(TemplateName + TemplateVersion + writer.TagListEncode(Attributes, false));
            writer.Write(tmp.Length, 3);
            writer.Write(tmp);
        }
コード例 #2
0
ファイル: AuthenticationBlock.cs プロジェクト: simongh/slpnet
        internal void ToBytes(SlpWriter writer)
        {
            var spitmp = writer.GetBytes(SpiString);

            writer.Write((short)Descriptor);
            writer.Write((short)(2 + 2 + 4 + 2 + spitmp.Length + Data.Length));
            writer.Write(TimeStamp);
            writer.Write(SpiString);

            writer.Write(Data);
        }
コード例 #3
0
ファイル: ServiceTypeReply.cs プロジェクト: simongh/slpnet
        public override void ToBytes(SlpWriter writer)
        {
            base.ToBytes(writer);

            var innerwriter = new SlpWriter(new MemoryStream());
            innerwriter.Write((short)ErrorCode);
            innerwriter.Write(ServiceTypes.Select(s => s.FullServiceType));

            writer.Write(innerwriter.Length, 3);
            WriteHeader(writer);
            writer.Write(innerwriter);
        }
コード例 #4
0
        public override void ToBytes(SlpWriter writer)
        {
            base.ToBytes(writer);

            var innerwriter = new SlpWriter(new System.IO.MemoryStream());
            innerwriter.Write(Scopes);
            Service.ToBytes(innerwriter);
            innerwriter.Write(Tags);

            writer.Write(innerwriter.Length, 3);
            WriteHeader(writer);
            writer.Write(innerwriter);
        }
コード例 #5
0
ファイル: AttributeReply.cs プロジェクト: simongh/slpnet
        public override void ToBytes(SlpWriter writer)
        {
            base.ToBytes(writer);

            var innerwriter = new SlpWriter(new MemoryStream());
            innerwriter.Write((short)ErrorCode);
            Attributes.ToBytes(innerwriter);
            WriteAuthBlocks(innerwriter, AuthBlocks);

            writer.Write(innerwriter.Length, 3);

            WriteHeader(writer);
            writer.Write(innerwriter);
        }
コード例 #6
0
        public override void ToBytes(SlpWriter writer)
        {
            base.ToBytes(writer);

            var innerwriter = new SlpWriter(new System.IO.MemoryStream());
            Service.ToBytes(innerwriter);
            writer.Write(Service.Uri.ServiceType);
            innerwriter.Write(Scopes);
            Service.Uri.Attributes.ToBytes(innerwriter);
            WriteAuthBlocks(innerwriter, AuthBlocks);

            writer.Write(innerwriter.Length, 3);
            WriteHeader(writer);
            writer.Write(innerwriter);
        }
コード例 #7
0
ファイル: ServiceAgentAdvert.cs プロジェクト: simongh/slpnet
        public override void ToBytes(SlpWriter writer)
        {
            base.ToBytes(writer);

            var innerwriter = new SlpWriter(new System.IO.MemoryStream());
            innerwriter.Write("service:service-agent://" + Uri.Host);
            innerwriter.Write(Scopes);
            Uri.Attributes.ToBytes(innerwriter);
            WriteAuthBlocks(innerwriter, AuthBlocks);

            writer.Write(innerwriter.Length, 3);

            WriteHeader(writer);
            writer.Write(innerwriter);
        }
コード例 #8
0
ファイル: AttributeRequest.cs プロジェクト: simongh/slpnet
        public override void ToBytes(SlpWriter writer)
        {
            base.ToBytes(writer);

            var innerwriter = new SlpWriter(new System.IO.MemoryStream());
            WriteIPList(innerwriter, PreviousResponders);
            innerwriter.Write(Uri.ToString());
            innerwriter.Write(Scopes);
            innerwriter.Write(Tags);
            innerwriter.Write(Spi);

            writer.Write(innerwriter.Length, 3);
            WriteHeader(writer);
            writer.Write(innerwriter);
        }
コード例 #9
0
ファイル: ServiceReply.cs プロジェクト: simongh/slpnet
        public override void ToBytes(SlpWriter writer)
        {
            base.ToBytes(writer);

            var innerwriter = new SlpWriter(new MemoryStream());
            innerwriter.Write((short)ErrorCode);
            innerwriter.Write((short)Services.Count);
            foreach (var item in Services)
            {
                item.ToBytes(innerwriter);
            }

            writer.Write(innerwriter.Length, 3);
            WriteHeader(writer);
            writer.Write(innerwriter);
        }
コード例 #10
0
ファイル: ServiceTypeRequest.cs プロジェクト: simongh/slpnet
        public override void ToBytes(SlpWriter writer)
        {
            base.ToBytes(writer);

            var innerwriter = new SlpWriter(new System.IO.MemoryStream());
            WriteIPList(innerwriter, PreviousResponders);

            if (GetAllAuthorities)
                innerwriter.Write((short)0xfff);
            else
                innerwriter.Write(NamingAuthority);
            innerwriter.Write(Scopes);

            writer.Write(innerwriter.Length, 3);
            WriteHeader(writer);
            writer.Write(innerwriter);
        }
コード例 #11
0
        public override void ToBytes(SlpWriter writer)
        {
            base.ToBytes(writer);

            var innerwriter = new SlpWriter(new System.IO.MemoryStream());

            WriteIPList(innerwriter, PreviousResponders);

            if (GetAllAuthorities)
            {
                innerwriter.Write((short)0xfff);
            }
            else
            {
                innerwriter.Write(NamingAuthority);
            }
            innerwriter.Write(Scopes);

            writer.Write(innerwriter.Length, 3);
            WriteHeader(writer);
            writer.Write(innerwriter);
        }
コード例 #12
0
ファイル: AttributeReply.cs プロジェクト: simongh/slpnet
        public override void ToBytes(SlpWriter writer)
        {
            base.ToBytes(writer);

            var innerwriter = new SlpWriter(new MemoryStream());

            innerwriter.Write((short)ErrorCode);
            Attributes.ToBytes(innerwriter);
            WriteAuthBlocks(innerwriter, AuthBlocks);

            writer.Write(innerwriter.Length, 3);

            WriteHeader(writer);
            writer.Write(innerwriter);
        }
コード例 #13
0
        public override void ToBytes(SlpWriter writer)
        {
            base.ToBytes(writer);

            var innerwriter = new SlpWriter(new System.IO.MemoryStream());

            Service.ToBytes(innerwriter);
            writer.Write(Service.Uri.ServiceType);
            innerwriter.Write(Scopes);
            Service.Uri.Attributes.ToBytes(innerwriter);
            WriteAuthBlocks(innerwriter, AuthBlocks);

            writer.Write(innerwriter.Length, 3);
            WriteHeader(writer);
            writer.Write(innerwriter);
        }
コード例 #14
0
        public override void ToBytes(SlpWriter writer)
        {
            base.ToBytes(writer);

            var innerwriter = new SlpWriter(new System.IO.MemoryStream());
            innerwriter.Write((short)ErrorCode);
            innerwriter.Write(BootTimeStamp);
            innerwriter.Write("service:directory-agent://" + Uri.Host);
            innerwriter.Write(Scopes);
            Uri.Attributes.ToBytes(innerwriter);
            innerwriter.Write(SpiStrings);
            WriteAuthBlocks(innerwriter, AuthBlocks);

            writer.Write(innerwriter.Length, 3);

            WriteHeader(writer);
            writer.Write(innerwriter);
        }
コード例 #15
0
 /// <summary>
 /// Convert this message to bytes
 /// </summary>
 /// <param name="writer">writer</param>
 public virtual void ToBytes(SlpWriter writer)
 {
     writer.Write((byte)Version);
     writer.Write((byte)FunctionId);
 }
コード例 #16
0
ファイル: MessageBase.cs プロジェクト: simongh/slpnet
        /// <summary>
        /// Add the message header bytes
        /// </summary>
        /// <param name="writer">writer</param>
        protected void WriteHeader(SlpWriter writer)
        {
            int flags = IsOverFlow ? 0x8 : 0x0;
            flags |= IsFresh ? 0x4 : 0x0;
            flags |= IsMulticast ? 0x2 : 0x0;
            writer.Write((byte)flags);

            writer.Write((int)0);

            writer.Write((short)MessageId);
            writer.Write(Language);
        }
コード例 #17
0
ファイル: MessageBase.cs プロジェクト: simongh/slpnet
 /// <summary>
 /// Write the authblocks bytes
 /// </summary>
 /// <param name="writer">writer</param>
 /// <param name="authBlocks">list of authblocks</param>
 protected void WriteAuthBlocks(SlpWriter writer, IEnumerable<Security.AuthenticationBlock> authBlocks)
 {
     writer.Write((byte)authBlocks.Count());
     foreach (var item in authBlocks)
     {
         item.ToBytes(writer);
     }
 }
コード例 #18
0
ファイル: MessageBase.cs プロジェクト: simongh/slpnet
 /// <summary>
 /// Convert this message to bytes
 /// </summary>
 /// <param name="writer">writer</param>
 public virtual void ToBytes(SlpWriter writer)
 {
     writer.Write((byte)Version);
     writer.Write((byte)FunctionId);
 }
コード例 #19
0
ファイル: UnknownExtension.cs プロジェクト: simongh/slpnet
 /// <summary>
 /// Converts this extension to a byte array
 /// </summary>
 /// <returns>array of bytes</returns>
 internal override void ToBytes(SlpWriter writer)
 {
     writer.Write((short)Id);
     writer.Write(Offset, 3);
     writer.Write(Data);
 }
コード例 #20
0
ファイル: UnknownExtension.cs プロジェクト: simongh/slpnet
 /// <summary>
 /// Converts this extension to a byte array
 /// </summary>
 /// <returns>array of bytes</returns>
 internal override void ToBytes(SlpWriter writer)
 {
     writer.Write((short)Id);
     writer.Write(Offset, 3);
     writer.Write(Data);
 }