mirror of
https://github.com/badaix/snapcast.git
synced 2025-05-24 22:46:14 +02:00
switched to standalone asio
This commit is contained in:
parent
75179cc936
commit
5cc7285a87
14 changed files with 42 additions and 42 deletions
|
@ -3,7 +3,7 @@ TARGET = snapclient
|
|||
SHELL = /bin/bash
|
||||
|
||||
CXX = /usr/bin/g++
|
||||
CFLAGS = -std=c++0x -Wall -Wno-unused-function -O3 -pthread -DVERSION=\"$(VERSION)\" -I..
|
||||
CFLAGS = -std=c++0x -Wall -Wno-unused-function -O3 -pthread -DVERSION=\"$(VERSION)\" -I.. -I../externals/asio/asio/include
|
||||
#CFLAGS = -std=c++0x -Wall -Wno-unused-function -O3 -pthread -DVERSION=\"$(VERSION)\" -I.. -static-libgcc -static-libstdc++
|
||||
LDFLAGS = -lrt -lboost_system -lboost_program_options -lasound -logg -lvorbis -lvorbisenc -lFLAC -lavahi-client -lavahi-common
|
||||
|
||||
|
|
|
@ -47,7 +47,7 @@ void ClientConnection::socketRead(void* _to, size_t _bytes)
|
|||
do
|
||||
{
|
||||
// boost::system::error_code error;
|
||||
len += socket_->read_some(boost::asio::buffer((char*)_to + len, toRead));
|
||||
len += socket_->read_some(asio::buffer((char*)_to + len, toRead));
|
||||
//cout << "len: " << len << ", error: " << error << endl;
|
||||
toRead = _bytes - len;
|
||||
}
|
||||
|
@ -58,7 +58,7 @@ void ClientConnection::socketRead(void* _to, size_t _bytes)
|
|||
void ClientConnection::start()
|
||||
{
|
||||
tcp::resolver resolver(io_service_);
|
||||
tcp::resolver::query query(tcp::v4(), host_, std::to_string(port_), boost::asio::ip::resolver_query_base::numeric_service);
|
||||
tcp::resolver::query query(tcp::v4(), host_, std::to_string(port_), asio::ip::resolver_query_base::numeric_service);
|
||||
auto iterator = resolver.resolve(query);
|
||||
logO << "Connecting\n";
|
||||
socket_.reset(new tcp::socket(io_service_));
|
||||
|
@ -86,10 +86,10 @@ void ClientConnection::stop()
|
|||
active_ = false;
|
||||
try
|
||||
{
|
||||
boost::system::error_code ec;
|
||||
std::error_code ec;
|
||||
if (socket_)
|
||||
{
|
||||
socket_->shutdown(boost::asio::ip::tcp::socket::shutdown_both, ec);
|
||||
socket_->shutdown(asio::ip::tcp::socket::shutdown_both, ec);
|
||||
if (ec) logE << "Error in socket shutdown: " << ec << endl;
|
||||
socket_->close(ec);
|
||||
if (ec) logE << "Error in socket close: " << ec << endl;
|
||||
|
@ -116,12 +116,12 @@ bool ClientConnection::send(const msg::BaseMessage* message) const
|
|||
if (!connected())
|
||||
return false;
|
||||
//logD << "send: " << message->type << ", size: " << message->getSize() << "\n";
|
||||
boost::asio::streambuf streambuf;
|
||||
asio::streambuf streambuf;
|
||||
std::ostream stream(&streambuf);
|
||||
tv t;
|
||||
message->sent = t;
|
||||
message->serialize(stream);
|
||||
boost::asio::write(*socket_.get(), streambuf);
|
||||
asio::write(*socket_.get(), streambuf);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
@ -24,14 +24,14 @@
|
|||
#include <atomic>
|
||||
#include <mutex>
|
||||
#include <memory>
|
||||
#include <boost/asio.hpp>
|
||||
#include <asio.hpp>
|
||||
#include <condition_variable>
|
||||
#include <set>
|
||||
#include "message/message.h"
|
||||
#include "common/timeDefs.h"
|
||||
|
||||
|
||||
using boost::asio::ip::tcp;
|
||||
using asio::ip::tcp;
|
||||
|
||||
|
||||
class ClientConnection;
|
||||
|
@ -105,7 +105,7 @@ protected:
|
|||
void socketRead(void* to, size_t bytes);
|
||||
void getNextMessage();
|
||||
|
||||
boost::asio::io_service io_service_;
|
||||
asio::io_service io_service_;
|
||||
std::shared_ptr<tcp::socket> socket_;
|
||||
std::atomic<bool> active_;
|
||||
std::atomic<bool> connected_;
|
||||
|
|
2
externals/tclap
vendored
2
externals/tclap
vendored
|
@ -1 +1 @@
|
|||
Subproject commit f41dcb5ce3d063c9fe95623193bba693338f3edb
|
||||
Subproject commit 3627d9402e529770df9b0edf2aa8c0e0d6c6bb41
|
|
@ -3,7 +3,7 @@ TARGET = snapserver
|
|||
SHELL = /bin/bash
|
||||
|
||||
CXX = /usr/bin/g++
|
||||
CFLAGS = -std=c++0x -Wall -Wno-unused-function -O3 -pthread -DVERSION=\"$(VERSION)\" -I..
|
||||
CFLAGS = -std=c++0x -Wall -Wno-unused-function -O3 -pthread -DVERSION=\"$(VERSION)\" -I.. -I../externals/asio/asio/include
|
||||
LDFLAGS = -lrt -lboost_system -lboost_program_options -lvorbis -lvorbisenc -logg -lFLAC -lavahi-client -lavahi-common
|
||||
|
||||
OBJ = snapServer.o config.o controlServer.o controlSession.o streamServer.o streamSession.o json/jsonrpc.o pcmreader/pcmReader.o pcmreader/pipeReader.o encoder/encoderFactory.o encoder/flacEncoder.o encoder/pcmEncoder.o encoder/oggEncoder.o publishAvahi.o ../common/log.o ../message/pcmChunk.o ../message/sampleFormat.o
|
||||
|
|
|
@ -33,7 +33,7 @@ using namespace std;
|
|||
using json = nlohmann::json;
|
||||
|
||||
|
||||
ControlServer::ControlServer(boost::asio::io_service* io_service, size_t port, ControlMessageReceiver* controlMessageReceiver) : io_service_(io_service), port_(port), controlMessageReceiver_(controlMessageReceiver)
|
||||
ControlServer::ControlServer(asio::io_service* io_service, size_t port, ControlMessageReceiver* controlMessageReceiver) : io_service_(io_service), port_(port), controlMessageReceiver_(controlMessageReceiver)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
#ifndef CONTROL_SERVER_H
|
||||
#define CONTROL_SERVER_H
|
||||
|
||||
#include <boost/asio.hpp>
|
||||
#include <asio.hpp>
|
||||
#include <vector>
|
||||
#include <thread>
|
||||
#include <memory>
|
||||
|
@ -35,7 +35,7 @@
|
|||
#include "message/serverSettings.h"
|
||||
|
||||
|
||||
using boost::asio::ip::tcp;
|
||||
using asio::ip::tcp;
|
||||
typedef std::shared_ptr<tcp::socket> socket_ptr;
|
||||
|
||||
|
||||
|
@ -46,7 +46,7 @@ typedef std::shared_ptr<tcp::socket> socket_ptr;
|
|||
class ControlServer : public ControlMessageReceiver
|
||||
{
|
||||
public:
|
||||
ControlServer(boost::asio::io_service* io_service, size_t port, ControlMessageReceiver* controlMessageReceiver = NULL);
|
||||
ControlServer(asio::io_service* io_service, size_t port, ControlMessageReceiver* controlMessageReceiver = NULL);
|
||||
virtual ~ControlServer();
|
||||
|
||||
void start();
|
||||
|
@ -67,7 +67,7 @@ private:
|
|||
std::shared_ptr<tcp::acceptor> acceptor_;
|
||||
|
||||
Queue<std::shared_ptr<msg::BaseMessage>> messages_;
|
||||
boost::asio::io_service* io_service_;
|
||||
asio::io_service* io_service_;
|
||||
size_t port_;
|
||||
ControlMessageReceiver* controlMessageReceiver_;
|
||||
};
|
||||
|
|
|
@ -52,10 +52,10 @@ void ControlSession::stop()
|
|||
active_ = false;
|
||||
try
|
||||
{
|
||||
boost::system::error_code ec;
|
||||
std::error_code ec;
|
||||
if (socket_)
|
||||
{
|
||||
socket_->shutdown(boost::asio::ip::tcp::socket::shutdown_both, ec);
|
||||
socket_->shutdown(asio::ip::tcp::socket::shutdown_both, ec);
|
||||
if (ec) logE << "Error in socket shutdown: " << ec << "\n";
|
||||
socket_->close(ec);
|
||||
if (ec) logE << "Error in socket close: " << ec << "\n";
|
||||
|
@ -96,10 +96,10 @@ bool ControlSession::send(const std::string& message) const
|
|||
std::unique_lock<std::mutex> mlock(mutex_);
|
||||
if (!socket_ || !active_)
|
||||
return false;
|
||||
boost::asio::streambuf streambuf;
|
||||
asio::streambuf streambuf;
|
||||
std::ostream request_stream(&streambuf);
|
||||
request_stream << message << "\r\n";
|
||||
boost::asio::write(*socket_.get(), streambuf);
|
||||
asio::write(*socket_.get(), streambuf);
|
||||
// logO << "done: " << message->type << ", size: " << message->size << ", id: " << message->id << ", refers: " << message->refersTo << "\n";
|
||||
return true;
|
||||
}
|
||||
|
@ -112,8 +112,8 @@ void ControlSession::reader()
|
|||
{
|
||||
while (active_)
|
||||
{
|
||||
boost::asio::streambuf response;
|
||||
boost::asio::read_until(*socket_, response, "\r\n");
|
||||
asio::streambuf response;
|
||||
asio::read_until(*socket_, response, "\r\n");
|
||||
std::string s((istreambuf_iterator<char>(&response)), istreambuf_iterator<char>());
|
||||
s.resize(s.length() - 2);
|
||||
|
||||
|
@ -133,7 +133,7 @@ void ControlSession::writer()
|
|||
{
|
||||
try
|
||||
{
|
||||
boost::asio::streambuf streambuf;
|
||||
asio::streambuf streambuf;
|
||||
std::ostream stream(&streambuf);
|
||||
string message;
|
||||
while (active_)
|
||||
|
|
|
@ -24,14 +24,14 @@
|
|||
#include <atomic>
|
||||
#include <mutex>
|
||||
#include <memory>
|
||||
#include <boost/asio.hpp>
|
||||
#include <asio.hpp>
|
||||
#include <condition_variable>
|
||||
#include <set>
|
||||
#include "message/message.h"
|
||||
#include "common/queue.h"
|
||||
|
||||
|
||||
using boost::asio::ip::tcp;
|
||||
using asio::ip::tcp;
|
||||
|
||||
|
||||
class ControlSession;
|
||||
|
|
|
@ -127,11 +127,11 @@ int main(int argc, char* argv[])
|
|||
settings.bufferMs = 400;
|
||||
settings.sampleFormat = sampleFormat;
|
||||
|
||||
boost::asio::io_service io_service;
|
||||
asio::io_service io_service;
|
||||
std::unique_ptr<StreamServer> streamServer(new StreamServer(&io_service, settings));
|
||||
streamServer->start();
|
||||
|
||||
auto func = [](boost::asio::io_service* ioservice)->void{ioservice->run();};
|
||||
auto func = [](asio::io_service* ioservice)->void{ioservice->run();};
|
||||
std::thread t(func, &io_service);
|
||||
|
||||
while (!g_terminated)
|
||||
|
|
|
@ -32,7 +32,7 @@ using namespace std;
|
|||
using json = nlohmann::json;
|
||||
|
||||
|
||||
StreamServer::StreamServer(boost::asio::io_service* io_service, const StreamServerSettings& streamServerSettings) : io_service_(io_service), settings_(streamServerSettings), sampleFormat_(streamServerSettings.sampleFormat)
|
||||
StreamServer::StreamServer(asio::io_service* io_service, const StreamServerSettings& streamServerSettings) : io_service_(io_service), settings_(streamServerSettings), sampleFormat_(streamServerSettings.sampleFormat)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
#ifndef STREAM_SERVER_H
|
||||
#define STREAM_SERVER_H
|
||||
|
||||
#include <boost/asio.hpp>
|
||||
#include <asio.hpp>
|
||||
#include <vector>
|
||||
#include <thread>
|
||||
#include <memory>
|
||||
|
@ -37,7 +37,7 @@
|
|||
#include "controlServer.h"
|
||||
|
||||
|
||||
using boost::asio::ip::tcp;
|
||||
using asio::ip::tcp;
|
||||
typedef std::shared_ptr<tcp::socket> socket_ptr;
|
||||
|
||||
|
||||
|
@ -73,7 +73,7 @@ struct StreamServerSettings
|
|||
class StreamServer : public MessageReceiver, ControlMessageReceiver, PcmListener
|
||||
{
|
||||
public:
|
||||
StreamServer(boost::asio::io_service* io_service, const StreamServerSettings& streamServerSettings);
|
||||
StreamServer(asio::io_service* io_service, const StreamServerSettings& streamServerSettings);
|
||||
virtual ~StreamServer();
|
||||
|
||||
void start();
|
||||
|
@ -100,7 +100,7 @@ private:
|
|||
mutable std::mutex mutex_;
|
||||
std::unique_ptr<PcmReader> pcmReader_;
|
||||
std::set<std::shared_ptr<StreamSession>> sessions_;
|
||||
boost::asio::io_service* io_service_;
|
||||
asio::io_service* io_service_;
|
||||
std::shared_ptr<tcp::acceptor> acceptor_;
|
||||
|
||||
StreamServerSettings settings_;
|
||||
|
|
|
@ -54,10 +54,10 @@ void StreamSession::stop()
|
|||
setActive(false);
|
||||
try
|
||||
{
|
||||
boost::system::error_code ec;
|
||||
std::error_code ec;
|
||||
if (socket_)
|
||||
{
|
||||
socket_->shutdown(boost::asio::ip::tcp::socket::shutdown_both, ec);
|
||||
socket_->shutdown(asio::ip::tcp::socket::shutdown_both, ec);
|
||||
if (ec) logE << "Error in socket shutdown: " << ec << "\n";
|
||||
socket_->close(ec);
|
||||
if (ec) logE << "Error in socket close: " << ec << "\n";
|
||||
|
@ -90,8 +90,8 @@ void StreamSession::socketRead(void* _to, size_t _bytes)
|
|||
size_t read = 0;
|
||||
do
|
||||
{
|
||||
boost::system::error_code error;
|
||||
read += socket_->read_some(boost::asio::buffer((char*)_to + read, _bytes - read));
|
||||
std::error_code error;
|
||||
read += socket_->read_some(asio::buffer((char*)_to + read, _bytes - read));
|
||||
}
|
||||
while (active_ && (read < _bytes));
|
||||
}
|
||||
|
@ -114,12 +114,12 @@ bool StreamSession::send(const msg::BaseMessage* message) const
|
|||
std::unique_lock<std::mutex> mlock(mutex_);
|
||||
if (!socket_ || !active_)
|
||||
return false;
|
||||
boost::asio::streambuf streambuf;
|
||||
asio::streambuf streambuf;
|
||||
std::ostream stream(&streambuf);
|
||||
tv t;
|
||||
message->sent = t;
|
||||
message->serialize(stream);
|
||||
boost::asio::write(*socket_.get(), streambuf);
|
||||
asio::write(*socket_.get(), streambuf);
|
||||
// logO << "done: " << message->type << ", size: " << message->size << ", id: " << message->id << ", refers: " << message->refersTo << "\n";
|
||||
return true;
|
||||
}
|
||||
|
@ -165,7 +165,7 @@ void StreamSession::writer()
|
|||
{
|
||||
try
|
||||
{
|
||||
boost::asio::streambuf streambuf;
|
||||
asio::streambuf streambuf;
|
||||
std::ostream stream(&streambuf);
|
||||
shared_ptr<const msg::BaseMessage> message;
|
||||
while (active_)
|
||||
|
|
|
@ -24,14 +24,14 @@
|
|||
#include <atomic>
|
||||
#include <mutex>
|
||||
#include <memory>
|
||||
#include <boost/asio.hpp>
|
||||
#include <asio.hpp>
|
||||
#include <condition_variable>
|
||||
#include <set>
|
||||
#include "message/message.h"
|
||||
#include "common/queue.h"
|
||||
|
||||
|
||||
using boost::asio::ip::tcp;
|
||||
using asio::ip::tcp;
|
||||
|
||||
|
||||
class StreamSession;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue