commit x64 compilation from lulu cause the other branch dont seems to compile properly at home
This commit is contained in:
79
include/modules/io_net/io_net_client.cpp
Normal file
79
include/modules/io_net/io_net_client.cpp
Normal file
@ -0,0 +1,79 @@
|
||||
/* -----------------------------------------------------------------------------
|
||||
GSFramework
|
||||
Copyright 2001-2013 Emmanuel Julien. All Rights Reserved.
|
||||
----------------------------------------------------------------------------- */
|
||||
|
||||
|
||||
#include "io_net/io_net_client.h"
|
||||
#include "io_net/io_net_client_worker_thread.h"
|
||||
#include "ascii/parser.h"
|
||||
#include "container/nlist.h"
|
||||
#include "nstring/nstring.h"
|
||||
#include "platform.h"
|
||||
#include "log/log.h"
|
||||
|
||||
using namespace GS::IO;
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
uint Net::GetCaps() const
|
||||
{ return IsCaseSensitive | CanRead | CanSeek; }
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
bool Net::QueueTask(NetWorkerBaseTask &task)
|
||||
{
|
||||
if (!worker.QueueTask(task))
|
||||
__ERR__("Net::QueueTask failed.\n", false);
|
||||
|
||||
while (task.processed.Get() == 0) {}
|
||||
return asbool(task.success.Get());
|
||||
}
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
Handle *Net::Open(const char *path, Mode mode)
|
||||
{
|
||||
NetWorkerOpenTask task(path, mode);
|
||||
return QueueTask(task) ? new NetHandle(this, task.handle) : NULL;
|
||||
}
|
||||
void Net::Close(Handle *h)
|
||||
{
|
||||
NetWorkerCloseTask task(((NetHandle *)h)->remote_id);
|
||||
QueueTask(task);
|
||||
}
|
||||
size_t Net::Tell(Handle *h)
|
||||
{
|
||||
NetWorkerTellTask task(((NetHandle *)h)->remote_id);
|
||||
return QueueTask(task) ? task.pos : 0;
|
||||
}
|
||||
size_t Net::Seek(Handle *h, ptrdiff_t offset, SeekRef ref)
|
||||
{
|
||||
NetWorkerSeekTask task(((NetHandle *)h)->remote_id, offset, ref);
|
||||
return QueueTask(task) ? task.pos : 0;
|
||||
}
|
||||
size_t Net::Read(Handle *h, void *data, size_t size)
|
||||
{
|
||||
NetWorkerReadTask task(((NetHandle *)h)->remote_id, data, size);
|
||||
return QueueTask(task) ? task.read_size : 0;
|
||||
}
|
||||
GS::String Net::Hash(const char *uri)
|
||||
{
|
||||
NetWorkerHashTask task(uri);
|
||||
return QueueTask(task) ? task.hash : 0;
|
||||
}
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
bool Net::IsConnected() const
|
||||
{ return worker.IsConnected(); }
|
||||
bool Net::Connect(const char *ip, int port)
|
||||
{ return worker.Start(ip, port); }
|
||||
void Net::Disconnect()
|
||||
{ worker.Stop(); }
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
NetHandle::~NetHandle()
|
||||
{ GetIOSystem()->Close(this); }
|
||||
//------------------------------------------------------------------------------
|
||||
Reference in New Issue
Block a user