1// Copyright (c) 2012 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "remoting/protocol/audio_writer.h" 6 7#include "base/bind.h" 8#include "net/socket/stream_socket.h" 9#include "remoting/base/constants.h" 10#include "remoting/proto/audio.pb.h" 11#include "remoting/protocol/message_serialization.h" 12#include "remoting/protocol/session.h" 13#include "remoting/protocol/session_config.h" 14 15namespace remoting { 16namespace protocol { 17 18AudioWriter::AudioWriter() 19 : ChannelDispatcherBase(kAudioChannelName) { 20} 21 22AudioWriter::~AudioWriter() { 23} 24 25void AudioWriter::OnInitialized() { 26 // TODO(sergeyu): Provide a non-null WriteFailedCallback for the writer. 27 buffered_writer_.Init( 28 channel(), BufferedSocketWriter::WriteFailedCallback()); 29} 30 31void AudioWriter::ProcessAudioPacket(scoped_ptr<AudioPacket> packet, 32 const base::Closure& done) { 33 buffered_writer_.Write(SerializeAndFrameMessage(*packet), done); 34} 35 36// static 37scoped_ptr<AudioWriter> AudioWriter::Create(const SessionConfig& config) { 38 if (!config.is_audio_enabled()) 39 return scoped_ptr<AudioWriter>(); 40 // TODO(kxing): Support different session configurations. 41 return scoped_ptr<AudioWriter>(new AudioWriter()); 42} 43 44} // namespace protocol 45} // namespace remoting 46