class CoreExport classbase
{
public:
- /** Time that the object was instantiated (used for TS calculation etc)
- */
- time_t age;
-
/** Constructor.
* Sets the object's time
*/
* the container which holds them. For some reason, nobody finished this.
* TODO: Finish in future release!
*/
-class CoreExport ChannelManager : public Extensible
+class CoreExport ChannelManager
{
private:
InspIRCd *ServerInstance;
*/
std::string name; /* CHANMAX */
+ /** Time that the object was instantiated (used for TS calculation etc)
+ */
+ time_t age;
+
/** Modes for the channel.
* This is not a null terminated string! It is a bitset where
* each item in it represents if a mode is set. For example
/** Holds an oper class.
*/
-struct operclass_data : public Extensible
+struct operclass_data : public classbase
{
/** Command list for the class
*/
/** Defines the server's length limits on various length-limited
* items such as topics, nicknames, channel names etc.
*/
-class ServerLimits : public Extensible
+class ServerLimits
{
public:
/** Maximum nickname length */
* and storage of the configuration data needed to run the ircd, such as
* the servername, connect classes, /ADMIN data, MOTDs and filenames etc.
*/
-class CoreExport ServerConfig : public Extensible
+class CoreExport ServerConfig : public classbase
{
private:
/** Creator/owner pointer
* mode is expected to have a parameter, then this is
* equivalent to returning MODEACTION_DENY.
*/
-class CoreExport ModeHandler : public Extensible
+class CoreExport ModeHandler : public classbase
{
protected:
/**
* and attach it to the mode using Server::AddModeWatcher and Server::DelModeWatcher.
* A ModeWatcher will be called both before and after the mode change.
*/
-class CoreExport ModeWatcher : public Extensible
+class CoreExport ModeWatcher : public classbase
{
protected:
/**
* Modules and the core can enable and disable snomask characters. If they do,
* then sending snomasks using these characters becomes possible.
*/
-class CoreExport SnomaskManager : public Extensible
+class CoreExport SnomaskManager
{
private:
/** Creator/owner
* have to be aware of which SocketEngine derived
* class they are using.
*/
-class CoreExport SocketEngine : public Extensible
+class CoreExport SocketEngine
{
protected:
/** Owner/Creator
* access non-threadsafe code from a Thread, use the Mutex class to wrap
* access to the code carefully.
*/
-class CoreExport ThreadEngine : public Extensible
+class CoreExport ThreadEngine
{
public:
* access non-threadsafe code from a Thread, use the Mutex class to wrap
* access to the code carefully.
*/
-class CoreExport ThreadEngine : public Extensible
+class CoreExport ThreadEngine
{
public:
* your object (which you should override) will be called
* at the given time.
*/
-class CoreExport Timer : public Extensible
+class CoreExport Timer
{
private:
/** The triggering time
* This will ensure timers are not missed, as well as removing timers that have
* expired and allowing the addition of new ones.
*/
-class CoreExport TimerManager : public Extensible
+class CoreExport TimerManager
{
protected:
/** A list of all pending timers
*/
time_t lastping;
+ /** Time that the object was instantiated (used for TS calculation etc)
+ */
+ time_t age;
+
/** Time the connection was created, set in the constructor. This
* may be different from the time the user's classbase object was
* created.
classbase::classbase()
{
- this->age = time(NULL);
}
bool Extensible::Shrink(const std::string &key)
bool done; /* True if lookup is finished */
std::string result; /* Holds the ident string if done */
public:
+ time_t age;
IdentRequestSocket(InspIRCd *Server, User* u) : user(u), ServerInstance(Server), result(u->ident)
{
+ age = ServerInstance->Time();
socklen_t size = 0;
SetFd(socket(user->server_sa.sa.sa_family, SOCK_STREAM, 0));
TreeServer::TreeServer(SpanningTreeUtilities* Util, InspIRCd* Instance, std::string Name, std::string Desc, const std::string &id)
: ServerInstance(Instance), ServerName(Name.c_str()), ServerDesc(Desc), Utils(Util)
{
+ age = Instance->Time();
bursting = false;
Parent = NULL;
VersionString.clear();
TreeServer::TreeServer(SpanningTreeUtilities* Util, InspIRCd* Instance, std::string Name, std::string Desc, const std::string &id, TreeServer* Above, TreeSocket* Sock, bool Hide)
: ServerInstance(Instance), Parent(Above), ServerName(Name.c_str()), ServerDesc(Desc), Socket(Sock), Utils(Util), Hidden(Hide)
{
+ age = Instance->Time();
bursting = true;
VersionString.clear();
ServerUserCount = ServerOperCount = 0;
void SetID(const std::string &id);
public:
+ time_t age;
bool Warned; /* True if we've warned opers about high latency on this server */
bool bursting; /* whether or not this server is bursting */
bool auth_challenge; /* Did we auth using challenge/response */
public:
HandshakeTimer* hstimer; /* Handshake timer, needed to work around I/O hook buffering */
+ time_t age;
/** Because most of the I/O gubbins are encapsulated within
* BufferedSocket, we just call the superclass constructor for
TreeSocket::TreeSocket(SpanningTreeUtilities* Util, InspIRCd* SI, std::string shost, int iport, unsigned long maxtime, const std::string &ServerName, const std::string &bindto, Module* HookMod)
: BufferedSocket(SI, shost, iport, maxtime, bindto), Utils(Util), Hook(HookMod)
{
+ age = SI->Time();
myhost = ServerName;
theirchallenge.clear();
ourchallenge.clear();
TreeSocket::TreeSocket(SpanningTreeUtilities* Util, InspIRCd* SI, int newfd, char* ip, Module* HookMod)
: BufferedSocket(SI, newfd, ip), Utils(Util), Hook(HookMod)
{
+ age = SI->Time();
this->LinkState = WAIT_AUTH_1;
theirchallenge.clear();
ourchallenge.clear();