snapcast/client/serverConnection.h
(no author) 0ca2460971 dont resolve
git-svn-id: svn://elaine/murooma/trunk@239 d8a302eb-03bc-478d-80e4-98257eca68ef
2014-09-06 19:56:10 +00:00

48 lines
950 B
C++

#ifndef RECEIVER_H
#define RECEIVER_H
#include <string>
#include <thread>
#include <atomic>
#include <boost/asio.hpp>
#include "stream.h"
#include "oggDecoder.h"
#include "pcmDecoder.h"
using boost::asio::ip::tcp;
class MessageReceiver
{
public:
virtual void onMessageReceived(BaseMessage* message) = 0;
};
class ServerConnection : public MessageReceiver
{
public:
ServerConnection(Stream* stream);
void start(MessageReceiver* receiver, const std::string& ip, size_t port);
void stop();
virtual void onMessageReceived(BaseMessage* message);
private:
void socketRead(tcp::socket* socket, void* to, size_t bytes);
void worker();
boost::asio::ip::tcp::endpoint endpt;
MessageReceiver* messageReceiver;
BaseMessage* getNextMessage(tcp::socket* socket);
boost::asio::io_service io_service;
tcp::resolver::iterator iterator;
std::atomic<bool> active_;
Stream* stream_;
std::thread* receiverThread;
OggDecoder decoder;
};
#endif