#ifndef CHROMECAST_MEDIA_AUDIO_AUDIO_OUTPUT_SERVICE_OUTPUT_SOCKET_H_
#define CHROMECAST_MEDIA_AUDIO_AUDIO_OUTPUT_SERVICE_OUTPUT_SOCKET_H_
#include <cstdint>
#include <memory>
#include "chromecast/media/audio/net/audio_socket.h"
namespace net {
class StreamSocket;
}
namespace chromecast {
namespace media {
namespace audio_output_service {
class Generic;
class OutputSocket : public AudioSocket {
public:
class Delegate : public AudioSocket::Delegate {
public:
virtual bool HandleMetadata(const Generic& message);
protected:
~Delegate() override;
};
explicit OutputSocket(std::unique_ptr<net::StreamSocket> socket);
OutputSocket();
OutputSocket(const OutputSocket&) = delete;
OutputSocket& operator=(const OutputSocket&) = delete;
~OutputSocket() override;
void SetDelegate(Delegate* delegate);
private:
bool ParseMetadata(char* data, size_t size) override;
Delegate* delegate_ = nullptr;
};
}
}
}
#endif