26 #include <sys/socket.h>
109 : Core(Core), pNext(nullptr)
124 if (fnActivated && pNetClient)
133 if (time_since_last_change)
135 time_t now = time(
nullptr);
136 *time_since_last_change = now - last_lobby_ready_change;
137 last_lobby_ready_change = now;
189 for (; pPos; pPrev = pPos, pPos = pPos->pNext)
193 pClient->pNext = pPos;
194 (pPrev ? pPrev->pNext :
pFirst) = pClient;
202 for (
C4Client *pClient =
pFirst; pClient; pClient = pClient->pNext)
203 if (pClient->getID() == iID)
210 for (
C4Client *pClient =
pFirst; pClient; pClient = pClient->pNext)
211 if (pClient->getID() > iAfterID)
218 for (
C4Client *pClient =
pFirst; pClient; pClient = pClient->pNext)
219 if (
SEqual(pClient->getName(), szName))
227 for (
C4Client *pClient =
pFirst; pClient; pClient = pClient->pNext)
235 for (
C4Client *pClient =
pFirst; pClient; pClient = pClient->pNext)
238 result.
Append(pClient->getName());
247 AddLocal(iLocalClientID,
true,
false);
254 pnNetClients->
Clear();
258 for (
C4Client *pClient =
pFirst; pClient; pClient = pClient->pNext)
267 if (pOldNetClients) pOldNetClients->
Clear();
279 for (pPrev =
pFirst; pPrev && pPrev->pNext != pClient; pPrev = pPrev->pNext) {}
281 if (!pPrev)
return false;
283 pPrev->pNext = pClient->pNext;
301 {
Log(
"ClientList: Duplicated client ID!");
return nullptr; }
314 LocalCore.
SetLocal(iID, fActivated, fObserver);
349 for (
C4Client *pClient =
pFirst, *pNext; pClient; pClient = pNext)
351 pNext = pClient->pNext;
353 if (!pClient->isLocal())
365 for (pClient =
pFirst; pClient; pClient = pNext)
367 pNext = pClient->pNext;
375 for (pClient = List.
pFirst; pClient; pClient = pClient->pNext)
397 if (deserializing)
Clear();
403 for (uint32_t i = 0; i < iClientCnt; i++)
410 for (
C4Client *pClient =
pFirst; pClient; pClient = pClient->pNext)
const int32_t C4ClientCoreDL_Different
const int32_t C4ClientCoreDL_IDChange
const int32_t C4ClientCoreDL_None
const int32_t C4ClientCoreDL_IDMatch
const int32_t C4ClientIDUnknown
C4Application Application
bool Log(const char *szMessage)
bool SEqual(const char *szStr1, const char *szStr2)
StdNamingCountAdapt< int_t > mkNamingCountAdapt(int_t &iCount, const char *szName)
StdNamingAdapt< T > mkNamingAdapt(T &&rValue, const char *szName)
const char * GetRevision() const
const char * getNick() const
void CompileFunc(StdCompiler *pComp) override
bool isLobbyReady() const
int32_t getDiffLevel(const C4ClientCore &CCore2) const
void SetActivated(bool fnActivated)
const char * getName() const
ValidatedStdCopyStrBuf< C4InVal::VAL_NameNoEmpty > Nick
void SetUnknown(int32_t iID)
ValidatedStdCopyStrBuf< C4InVal::VAL_NameAllowEmpty > Revision
ValidatedStdCopyStrBuf< C4InVal::VAL_NameAllowEmpty > CUID
const char * getCUID() const
void SetLobbyReady(bool fnLobbyReady)
void SetLocal(int32_t iID, bool fnActivated, bool fnObserver)
ValidatedStdCopyStrBuf< C4InVal::VAL_NameNoEmpty > Name
void SetCore(const C4ClientCore &NewCore)
C4Network2Client * getNetClient() const
void CompileFunc(StdCompiler *pComp)
const C4ClientCore & getCore() const
void SetLobbyReady(bool fnLobbyReady, time_t *time_since_last_change=nullptr)
void SetActivated(bool fnActivated)
void CompileFunc(StdCompiler *pComp)
void InitNetwork(class C4Network2ClientList *pNetClients)
C4ClientList & operator=(const C4ClientList &List)
StdStrBuf GetAllClientNames() const
bool Remove(C4Client *pClient, bool fTemporary=false)
C4Client * getClientByID(int32_t iID) const
void CtrlRemove(const C4Client *pClient, const char *szReason)
C4Client * getClientByName(const char *szName) const
bool Init(int32_t iLocalClientID=C4ClientIDHost)
void Add(C4Client *pClient)
C4Client * AddLocal(int32_t iID, bool fActivated, bool fObserver)
class C4Network2ClientList * pNetClients
C4Client * getNextClientByID(int32_t iAfterID) const
int32_t getClientCnt() const
void SetLocalID(int32_t iID)
char Participants[CFG_MaxString+1]
const char * GetRegistrationData(const char *field)
ValidatedStdCopyStrBuf< C4InVal::VAL_NameAllowEmpty > Nick
void DoInput(C4PacketType eCtrlType, C4ControlPacket *pPkt, C4ControlDeliveryType eDelivery)
void SetStatus(C4Network2ClientStatus enStatus)
void SetLastActivity(int32_t iTick)
C4Network2Client * RegClient(C4Client *pClient)
void DeleteClient(C4Network2Client *pClient)
bool RemoveAtClient(int iClient, bool fDisconnect)
void Value(const T &rStruct)
virtual bool isDeserializer()
void Ref(const char *pnData)
void Append(const char *pnData, size_t iChars)
void CopyValidated(const char *szFromVal)