Files
Webcam/include/modules/io_net/io_net_server_thread.cpp

77 lines
1.9 KiB
C++

/* -----------------------------------------------------------------------------
GSFramework
Copyright 2001-2013 Emmanuel Julien. All Rights Reserved.
----------------------------------------------------------------------------- */
#include "io_net/io_net_server_thread.h"
#include "filesystem/io_cfile.h"
#include "platform.h"
#include "log/log.h"
using namespace GS::IO;
//------------------------------------------------------------------------------
void NetServerThread::Execute()
{
{
Threading::MutexLock lock(&server_mutex);
server = new NetServer(basefs);
}
if (server->Start(ip.c_str(), port))
for (state.Set(1); state.Get() != 2; )
{
{
Threading::MutexLock lock(&server_mutex);
server->UpdateHost();
}
Platform::Get().Sleep(1);
}
{
Threading::MutexLock lock(&server_mutex);
server = NULL;
}
state.Set(0);
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
bool NetServerThread::Start(const char *_ip, int _port)
{
ip = _ip;
port = _port;
if (!Thread::Start())
return false;
while (state.Get() == 0)
;
return asbool(state.Get() != -1);
}
void NetServerThread::Stop()
{
state.Set(2);
while (state.Get() != 0); // spinlock
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
void NetServerThread::GetStatistics(NetServer::Statistics &stats)
{
Threading::MutexLock lock(&server_mutex);
if (server.IsValid())
server->GetStatistics(stats);
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
NetServerThread::~NetServerThread()
{
Stop();
}
//------------------------------------------------------------------------------