socket stuff

git-svn-id: svn://elaine/murooma/trunk@278 d8a302eb-03bc-478d-80e4-98257eca68ef
This commit is contained in:
(no author) 2014-09-20 16:58:21 +00:00
parent df77bdd8cb
commit c7655f3e55
2 changed files with 7 additions and 5 deletions

View file

@ -48,7 +48,7 @@ void ServerSession::add(shared_ptr<BaseMessage> message)
bool ServerSession::send(BaseMessage* message) bool ServerSession::send(BaseMessage* message)
{ {
// std::unique_lock<std::mutex> mlock(mutex_); std::unique_lock<std::mutex> mlock(mutex_);
//cout << "send: " << message->type << ", size: " << message->getSize() << "\n"; //cout << "send: " << message->type << ", size: " << message->getSize() << "\n";
if (!connected()) if (!connected())
return false; return false;
@ -110,18 +110,19 @@ void ServerSession::writer()
{ {
boost::asio::streambuf streambuf; boost::asio::streambuf streambuf;
std::ostream stream(&streambuf); std::ostream stream(&streambuf);
for (;;) shared_ptr<BaseMessage> message;
while (active_)
{ {
shared_ptr<BaseMessage> message(messages.pop()); if (messages.try_pop(message, std::chrono::milliseconds(500)))
send(message.get()); send(message.get());
} }
} }
catch (std::exception& e) catch (std::exception& e)
{ {
std::cerr << "Exception in thread: " << e.what() << "\n"; std::cerr << "Exception in thread: " << e.what() << "\n";
}
active_ = false; active_ = false;
} }
}

View file

@ -51,6 +51,7 @@ protected:
void writer(); void writer();
std::atomic<bool> active_; std::atomic<bool> active_;
mutable std::mutex mutex_;
std::thread* readerThread; std::thread* readerThread;
std::thread* writerThread; std::thread* writerThread;
std::shared_ptr<tcp::socket> socket; std::shared_ptr<tcp::socket> socket;