private void ApplyVideoConfig() { if (LocalStream != null) { foreach (var videoTrack in LocalStream.GetVideoTracks()) { videoTrack.Enabled = _isVideoEnabled; } } }
private void ApplyMicrophoneConfig() { if (LocalStream != null) { foreach (var audioTrack in LocalStream.GetAudioTracks()) { audioTrack.Enabled = !_microphoneMuted; } } }
/// <summary> /// Защищенная реализации шаблона очистки объекта. /// </summary> /// <param name="disposing"></param> protected virtual void Dispose(bool disposing) { if (!disposed) { if (disposing) { LocalStream.Dispose(); } // освобождаем неуправляемые объекты disposed = true; } }
/// <summary> /// Ф-ция чтения следующего символа из потока. /// Если произведена попытка прочитать символ после достижения конца файла, метод /// должен бросать соответствующее исключение /// </summary> /// <returns>Считанный символ.</returns> public char ReadNextChar() { if (LocalStream.EndOfStream) { IsEof = true; } // TODO : Необходимо считать очередной символ из LocalStream. try { return((char)LocalStream.Read()); } catch (Exception ex) { throw new IOException(ex.Message); } }
public async Task SendToRemote(byte[] message) { try { await LocalStream.WriteAsync(message, 0, message.Length); await LocalStream.FlushAsync(); } catch (IOException e) { throw new TestServiceTransportException("Except while writing to error stream", e); } catch (ObjectDisposedException e) { throw new TestServiceTransportException("Except while writing to error stream", e); } }
public void Dispose() { LocalStream?.Dispose(); RemoteStream?.Dispose(); }