public SdpServiceExpectedCall(UInt16 attrId,
                               SdpService.DESC_TYPE attrType, UInt32 attrLen, byte[] val)
 {
     this.attrId   = attrId;
     this.attrType = attrType;
     this.attrLen  = attrLen;
     this.val      = val;
     Debug.Assert(attrLen == val.Length, "consistent length?!");
 }
Esempio n. 2
0
 void ISdpService.AddAttribute(ushort id, SdpService.DESC_TYPE dt, int valLen, byte[] val)
 {
     log.AppendFormat(System.Globalization.CultureInfo.InvariantCulture,
                      "AddAttribute: id: 0x{0:X4}, dt: {1}, len: {2}, val: {3}\r\n",
                      id, dt, valLen,
                      val == null ? "(null)" : BitConverter.ToString(val));
     m_actualAddAttr.Add(new SdpServiceExpectedCall(id, dt, checked ((uint)valLen), val));
     ++m_countAddAttributeCalls;
     Debug.Assert(m_actualAddAttr.Count == m_countAddAttributeCalls, "count and list count");
 }
        //--------

        private static SdpService.DESC_TYPE ToDESC_TYPE(ElementTypeDescriptor elementTypeDescriptor)
        {
            // This is actually a one-to-one exact match, so no need for this map
            // but leave, as it allows us to block Nil for instance.
            SdpService.DESC_TYPE dt;
            switch (elementTypeDescriptor)
            {
            case ElementTypeDescriptor.UnsignedInteger:
                dt = SdpService.DESC_TYPE.UINT;
                break;

            case ElementTypeDescriptor.TwosComplementInteger:
                dt = SdpService.DESC_TYPE.TWO_COMP_INT;
                break;

            case ElementTypeDescriptor.Uuid:
                dt = SdpService.DESC_TYPE.UUID;
                break;

            case ElementTypeDescriptor.TextString:
                dt = SdpService.DESC_TYPE.TEXT_STR;
                break;

            case ElementTypeDescriptor.Boolean:
                dt = SdpService.DESC_TYPE.BOOLEAN;
                break;

            case ElementTypeDescriptor.ElementSequence:
                dt = SdpService.DESC_TYPE.DATA_ELE_SEQ;
                break;

            case ElementTypeDescriptor.ElementAlternative:
                dt = SdpService.DESC_TYPE.DATA_ELE_ALT;
                break;

            case ElementTypeDescriptor.Url:
                dt = SdpService.DESC_TYPE.URL;
                break;

            //
            case ElementTypeDescriptor.Unknown:
            case ElementTypeDescriptor.Nil:
            default:
                throw new ArgumentException("ToDESC_TYPE(" + elementTypeDescriptor + ")");
            }
            return(dt);
        }
 protected override void CompleteHeaderWrite(HeaderWriteState headerState,
                                             byte[] buf, int offsetAtEndOfWritten, out int totalLength)
 {
     base.CompleteHeaderWrite(headerState, buf, offsetAtEndOfWritten, out totalLength);
     //
     if (headerState.widcommNeedsStoring)
     {
         Debug.Assert(!this.needWrite, "overwrite");
         Debug.Assert(this.isInSeqOrAlt);
         this.isInSeqOrAlt = false;
         int    startOffset = headerState.HeaderOffset + headerState.HeaderLength;
         byte[] val         = new byte[offsetAtEndOfWritten - startOffset];
         Array.Copy(buf, startOffset, val, 0, val.Length);
         this.value     = val;
         this.dt        = ToDESC_TYPE(headerState.Etd);
         this.needWrite = true;
     }
 }
 protected override void WriteFixedLength(ServiceElement element, byte[] valueBytes, byte[] buf, ref int offset, out int totalLength)
 {
     if (this.isAttrId)
     {
     }
     else if (this.isInSeqOrAlt)
     {
         // Child of a SEQ/ALT, will be written from byte buffer.
     }
     else
     {
         Debug.Assert(!this.needWrite, "overwrite");
         this.value     = (byte[])valueBytes.Clone();
         this.dt        = ToDESC_TYPE(element.ElementTypeDescriptor);
         this.needWrite = true;
     }
     //
     base.WriteFixedLength(element, valueBytes, buf, ref offset, out totalLength);
 }