コード例 #1
0
 public object Convert(object value, object converterParameter, BinarySerializationContext ctx)
 {
     var sector = (uint) value;
     var iso = ctx.FindAncestor<Iso9660>();
     var sectorSize = iso.PrimaryVolumeDescriptor.SectorSize;
     return sector*sectorSize;
 }
コード例 #2
0
        public object Convert(object value, object converterParameter, BinarySerializationContext ctx)
        {
            var sector     = (uint)value;
            var iso        = ctx.FindAncestor <Iso9660>();
            var sectorSize = iso.PrimaryVolumeDescriptor.SectorSize;

            return(sector * sectorSize);
        }
コード例 #3
0
ファイル: Domain.cs プロジェクト: w796933/SecureDNS
        public void Deserialize(Stream Stream, Endianness Endianness, BinarySerializationContext Context)
        {
            while (true)
            {
                var Byte = (byte)Stream.ReadByte();

                if (Byte == 0)
                {
                    return;
                }

                var LabelType = GetLabelType(Byte);

                switch (LabelType)
                {
                case LabelType.Normal:
                {
                    var LabelLength = GetLabelLength(Byte);

                    GetLabel(Stream, LabelLength);

                    continue;
                }

                case LabelType.Compressed:
                {
                    var Pointer = GetPointer(Byte, Stream.ReadByte());

                    var Message = Context.FindAncestor <Message>();

                    var QLabel = Message.Questions
                                 .Select(Question => Question.Domain)
                                 .Where(Domain => Domain.Labels.Any(Label => Label.Offset == Pointer))
                                 .SelectMany(Domain => Domain.Labels)
                                 .Where(Label => Label.Offset >= Pointer);

                    Labels.AddRange(QLabel);

                    return;
                }

                case LabelType.Extended:
                case LabelType.Unallocated:
                default:
                    throw new NotImplementedException(Enum.GetName(typeof(LabelType), LabelType));
                }
            }
        }