Example #1
0
 public void OnHeader([In, MarshalAs(UnmanagedType.Interface)] INSSBuffer pHeader)
 {
     byte[] buffer;
     uint length;
     var manBuff = pHeader as ManBuffer;
     if (manBuff != null)
     {
         buffer = manBuff.Buffer;
         length = manBuff.UsedLength;
         manBuff.Dispose();
     }
     else
     {
         using (var b = new NSSBuffer(pHeader))
         {
             length = b.Length;
             buffer = new byte[length];
             b.Read(buffer, 0, (int)length);
         }
     }
     if (!m_HeaderWrote)
     {
         if (BaseStream.CanSeek)
         {
             m_HeaderPosition = BaseStream.Position;
             m_HeaderLength = length;
         }
         m_HeaderWrote = true;
         base.Write(buffer, 0, (int)length);
     }
     else if (BaseStream.CanSeek && (length == m_HeaderLength))
     {
         long pos = BaseStream.Position;
         BaseStream.Position = m_HeaderPosition;
         BaseStream.Write(buffer, 0, (int)length);
         BaseStream.Position = pos;
     }
 }
Example #2
0
 public void OnDataUnit([In, MarshalAs(UnmanagedType.Interface)] INSSBuffer pDataUnit)
 {
     byte[] buffer;
     int length;
     var manBuff = pDataUnit as ManBuffer;
     if (manBuff != null)
     {
         buffer = manBuff.Buffer;
         length = (int)manBuff.UsedLength;
         manBuff.Dispose();
     }
     else
     {
         using (var b = new NSSBuffer(pDataUnit))
         {
             length = (int)b.Length;
             buffer = new byte[length];
             b.Read(buffer, 0, length);
         }
     }
     base.Write(buffer, 0, length);
 }