/*
* querycmds.h
*
* $Id: querycmds.h,v 1.6 2001/06/29 15:51:00 kev Exp $
*/
#ifndef INCLUDED_querycmds_h
#define INCLUDED_querycmds_h
#ifndef INCLUDED_ircd_features_h
#include "ircd_features.h" /* feature_str() */
#endif
struct Client;
/*
* Structs
*/
struct UserStatistics {
/* Local connections: */
unsigned int unknowns; /* IsUnknown() || IsConnecting() || IsHandshake() */
unsigned int local_servers; /* IsServer() && MyConnect() */
unsigned int local_clients; /* IsUser() && MyConnect() */
/* Global counts: */
unsigned int servers; /* IsServer() || IsMe() */
unsigned int clients; /* IsUser() */
/* Global user mode changes: */
unsigned int inv_clients; /* IsUser() && IsInvisible() */
unsigned int opers; /* IsUser() && IsOper() */
/* Misc: */
unsigned int channels;
};
extern struct UserStatistics UserStats;
/*
* Macros
*/
/* Macros for remote connections: */
#define Count_newremoteclient(UserStats, cptr) (++UserStats.clients, ++(cli_serv(cptr)->clients))
#define Count_newremoteserver(UserStats) (++UserStats.servers)
#define Count_remoteclientquits(UserStats,cptr) \
do { \
--UserStats.clients; \
if (!IsServer(cptr)) \
--(cli_serv(cli_user(cptr)->server)->clients); \
} while (0)
#define Count_remoteserverquits(UserStats) (--UserStats.servers)
/* Macros for local connections: */
#define Count_newunknown(UserStats) (++UserStats.unknowns)
#define Count_unknownbecomesclient(cptr, UserStats) \
do { \
--UserStats.unknowns; ++UserStats.local_clients; ++UserStats.clients; \
if (match(feature_str(FEAT_DOMAINNAME), cli_sockhost(cptr)) == 0) \
++current_load.local_count; \
if (UserStats.local_clients > max_client_count) \
max_client_count = UserStats.local_clients; \
if (UserStats.local_clients + UserStats.local_servers > max_connection_count) \
{ \
max_connection_count = UserStats.local_clients + UserStats.local_servers; \
if (max_connection_count % 10 == 0) \
sendto_opmask_butone(0, SNO_OLDSNO, "Maximum connections: %d (%d clients)", \
max_connection_count, max_client_count); \
} \
} while(0)
#define Count_unknownbecomesserver(UserStats) do { --UserStats.unknowns; ++UserStats.local_servers; ++UserStats.servers; } while(0)
#define Count_clientdisconnects(cptr, UserStats) \
do \
{ \
--UserStats.local_clients; --UserStats.clients; \
if (match(feature_str(FEAT_DOMAINNAME), cli_sockhost(cptr)) == 0) \
--current_load.local_count; \
} while(0)
#define Count_serverdisconnects(UserStats) do { --UserStats.local_servers; --UserStats.servers; } while(0)
#define Count_unknowndisconnects(UserStats) (--UserStats.unknowns)
/*
* Prototypes
*/
#endif /* INCLUDED_querycmds_h */
syntax highlighted by Code2HTML, v. 0.9.1