/// <summary> /// Send control packet /// </summary> /// <param name="flags">SMUX header flags</param> private void SendControlPacket(SNISMUXFlags flags) { byte[] headerBytes = null; lock (this) { GetSMUXHeaderBytes(0, (byte)flags, ref headerBytes); } SNIPacket packet = new SNIPacket(); packet.SetData(headerBytes, SNISMUXHeader.HEADER_LENGTH); _connection.Send(packet); }
/// <summary> /// Send control packet /// </summary> /// <param name="flags">SMUX header flags</param> /// <param name="async">true if packet should be sent asynchronously</param> private void SendControlPacket(SNISMUXFlags flags, bool async) { byte[] headerBytes = null; lock (this) { GetSMUXHeaderBytes(0, (byte)flags, ref headerBytes); } SNIPacket packet = new SNIPacket(null); packet.SetData(headerBytes, SNISMUXHeader.HEADER_LENGTH); if (async) { _connection.SendAsync(packet, (sentPacket, error) => { }); } else { _connection.Send(packet); } }
/// <summary> /// Set packet data /// </summary> /// <param name="packet">SNI packet</param> /// <param name="data">Data</param> /// <param name="length">Length</param> public void PacketSetData(SNIPacket packet, byte[] data, int length) { packet.SetData(data, length); }