New upstream version 8.1.0
This commit is contained in:
90
client_module/source/common/nodes/ConnectionList.h
Normal file
90
client_module/source/common/nodes/ConnectionList.h
Normal file
@@ -0,0 +1,90 @@
|
||||
#ifndef CONNECTIONLIST_H_
|
||||
#define CONNECTIONLIST_H_
|
||||
|
||||
#include <common/Common.h>
|
||||
#include <common/toolkit/list/PointerList.h>
|
||||
#include <common/net/sock/PooledSocket.h>
|
||||
|
||||
struct ConnectionList;
|
||||
typedef struct ConnectionList ConnectionList;
|
||||
|
||||
|
||||
static inline void ConnectionList_init(ConnectionList* this, bool owner);
|
||||
static inline void ConnectionList_uninit(ConnectionList* this);
|
||||
static inline void ConnectionList_append(ConnectionList* this, PooledSocket* socket);
|
||||
static inline void ConnectionList_prepend(ConnectionList* this, PooledSocket* socket);
|
||||
static inline int ConnectionList_moveToHead(ConnectionList* this, PooledSocket* socket);
|
||||
static inline int ConnectionList_moveToTail(ConnectionList* this, PooledSocket* socket);
|
||||
static inline int ConnectionList_remove(ConnectionList* this, PooledSocket* socket);
|
||||
static inline size_t ConnectionList_length(ConnectionList* this);
|
||||
|
||||
|
||||
struct ConnectionList
|
||||
{
|
||||
PointerList pointerList;
|
||||
bool owner;
|
||||
};
|
||||
|
||||
/*
|
||||
* @param owner this list owns any PooledSockets added as list elements. The owner list
|
||||
maintains the socket's pool and poolElem members. A temporary list should set
|
||||
this parameter to false.
|
||||
*/
|
||||
void ConnectionList_init(ConnectionList* this, bool owner)
|
||||
{
|
||||
PointerList_init( (PointerList*)this);
|
||||
this->owner = owner;
|
||||
}
|
||||
|
||||
void ConnectionList_uninit(ConnectionList* this)
|
||||
{
|
||||
PointerList_uninit( (PointerList*)this);
|
||||
}
|
||||
|
||||
void ConnectionList_prepend(ConnectionList* this, PooledSocket* socket)
|
||||
{
|
||||
PointerList_addHead( (PointerList*)this, socket);
|
||||
if (this->owner)
|
||||
PooledSocket_setPool(socket, this, PointerList_getHead( (PointerList*) this));
|
||||
}
|
||||
|
||||
void ConnectionList_append(ConnectionList* this, PooledSocket* socket)
|
||||
{
|
||||
PointerList_append( (PointerList*)this, socket);
|
||||
if (this->owner)
|
||||
PooledSocket_setPool(socket, this, PointerList_getTail( (PointerList*) this));
|
||||
}
|
||||
|
||||
int ConnectionList_remove(ConnectionList* this, PooledSocket* socket)
|
||||
{
|
||||
if (unlikely(PooledSocket_getPoolElem(socket) == NULL))
|
||||
return -EINVAL;
|
||||
PointerList_removeElem( (PointerList*)this, PooledSocket_getPoolElem(socket));
|
||||
if (this->owner)
|
||||
PooledSocket_setPool(socket, NULL, NULL);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int ConnectionList_moveToHead(ConnectionList* this, PooledSocket* socket)
|
||||
{
|
||||
if (unlikely(PooledSocket_getPoolElem(socket) == NULL))
|
||||
return -EINVAL;
|
||||
PointerList_moveToHead( (PointerList*) this, PooledSocket_getPoolElem(socket));
|
||||
return 0;
|
||||
}
|
||||
|
||||
int ConnectionList_moveToTail(ConnectionList* this, PooledSocket* socket)
|
||||
{
|
||||
if (unlikely(PooledSocket_getPoolElem(socket) == NULL))
|
||||
return -EINVAL;
|
||||
PointerList_moveToTail( (PointerList*) this, PooledSocket_getPoolElem(socket));
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline size_t ConnectionList_length(ConnectionList* this)
|
||||
{
|
||||
return PointerList_length( (PointerList*)this);
|
||||
}
|
||||
|
||||
|
||||
#endif /*CONNECTIONLIST_H_*/
|
||||
Reference in New Issue
Block a user