commit - 4953c15bdfd960006d99135c46925231a1d7d045
commit + 0b04bfa7c04b074e5183109a3f67a46bcdda3aea
blob - 83a331090f74ffe2d0cb2aab6a23c8afa6d1b61b
blob + 72332653b99c66035d859f689bdfe375dbc7c145
--- src/ngircd/Makefile.am
+++ src/ngircd/Makefile.am
# Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste
# der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS.
#
-# $Id: Makefile.am,v 1.32 2002/12/30 16:07:23 alex Exp $
+# $Id: Makefile.am,v 1.33 2002/12/30 17:14:28 alex Exp $
#
AUTOMAKE_OPTIONS = ../portab/ansi2knr
sbin_PROGRAMS = ngircd
-ngircd_SOURCES = ngircd.c channel.c client.c conf.c conn.c conn-zip.c hash.c \
- irc.c irc-channel.c irc-info.c irc-login.c irc-mode.c irc-op.c irc-oper.c \
- irc-server.c irc-write.c lists.c log.c match.c parse.c resolve.c tool.c
+ngircd_SOURCES = ngircd.c channel.c client.c conf.c conn.c conn-zip.c conn-func.c \
+ hash.c irc.c irc-channel.c irc-info.c irc-login.c irc-mode.c irc-op.c \
+ irc-oper.c irc-server.c irc-write.c lists.c log.c match.c parse.c resolve.c \
+ tool.c
ngircd_LDFLAGS = -L../portab
ngircd_LDADD = -lngportab
-noinst_HEADERS = ngircd.h channel.h client.h conf.h conn.h conn-zip.h hash.h \
- irc.h irc-channel.h irc-info.h irc-login.h irc-mode.h irc-op.h irc-oper.h \
- irc-server.h irc-write.h lists.h log.h match.h parse.h resolve.h tool.h \
- messages.h defines.h
+noinst_HEADERS = ngircd.h channel.h client.h conf.h conn.h conn-zip.h conn-func.h \
+ hash.h irc.h irc-channel.h irc-info.h irc-login.h irc-mode.h irc-op.h \
+ irc-oper.h irc-server.h irc-write.h lists.h log.h match.h parse.h resolve.h \
+ tool.h messages.h defines.h
clean-local:
rm -f check-version check-help lint.out cvs-version.*
blob - /dev/null
blob + 172784b660f4a650cd731b49e8ad9bcfa0e52fb3 (mode 644)
--- /dev/null
+++ src/ngircd/conn-func.c
+/*
+ * ngIRCd -- The Next Generation IRC Daemon
+ * Copyright (c)2001,2002 by Alexander Barton (alex@barton.de)
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ * Please read the file COPYING, README and AUTHORS for more information.
+ *
+ * Connection management: Global functions
+ */
+
+
+#define CONN_MODULE
+
+#include "portab.h"
+
+static char UNUSED id[] = "$Id: conn-func.c,v 1.1 2002/12/30 17:14:28 alex Exp $";
+
+#include "imp.h"
+#include <assert.h>
+
+#include "conn.h"
+
+#include "exp.h"
+#include "conn-func.h"
+
+
+GLOBAL VOID
+Conn_UpdateIdle( CONN_ID Idx )
+{
+ /* Idle-Timer zuruecksetzen */
+
+ assert( Idx > NONE );
+ My_Connections[Idx].lastprivmsg = time( NULL );
+}
+
+
+GLOBAL time_t
+Conn_GetIdle( CONN_ID Idx )
+{
+ /* Idle-Time einer Verbindung liefern (in Sekunden) */
+
+ assert( Idx > NONE );
+ return time( NULL ) - My_Connections[Idx].lastprivmsg;
+} /* Conn_GetIdle */
+
+
+GLOBAL time_t
+Conn_LastPing( CONN_ID Idx )
+{
+ /* Zeitpunkt des letzten PING liefern */
+
+ assert( Idx > NONE );
+ return My_Connections[Idx].lastping;
+} /* Conn_LastPing */
+
+
+GLOBAL VOID
+Conn_SetPenalty( CONN_ID Idx, time_t Seconds )
+{
+ /* Penalty-Delay fuer eine Verbindung (in Sekunden) setzen;
+ * waehrend dieser Zeit wird der entsprechende Socket vom Server
+ * bei Lese-Operationen komplett ignoriert. Der Delay kann mit
+ * dieser Funktion nur erhoeht, nicht aber verringert werden. */
+
+ time_t t;
+
+ assert( Idx > NONE );
+ assert( Seconds >= 0 );
+
+ t = time( NULL ) + Seconds;
+ if( t > My_Connections[Idx].delaytime ) My_Connections[Idx].delaytime = t;
+} /* Conn_SetPenalty */
+
+
+GLOBAL VOID
+Conn_ResetPenalty( CONN_ID Idx )
+{
+ assert( Idx > NONE );
+ My_Connections[Idx].delaytime = 0;
+} /* Conn_ResetPenalty */
+
+
+GLOBAL VOID
+Conn_ClearFlags( VOID )
+{
+ /* Alle Connection auf "nicht-markiert" setzen */
+
+ CONN_ID i;
+
+ for( i = 0; i < Pool_Size; i++ ) My_Connections[i].flag = 0;
+} /* Conn_ClearFlags */
+
+
+GLOBAL INT
+Conn_Flag( CONN_ID Idx )
+{
+ /* Ist eine Connection markiert (TRUE) oder nicht? */
+
+ assert( Idx > NONE );
+ return My_Connections[Idx].flag;
+} /* Conn_Flag */
+
+
+GLOBAL VOID
+Conn_SetFlag( CONN_ID Idx, INT Flag )
+{
+ /* Connection markieren */
+
+ assert( Idx > NONE );
+ My_Connections[Idx].flag = Flag;
+} /* Conn_SetFlag */
+
+
+GLOBAL CONN_ID
+Conn_First( VOID )
+{
+ /* Connection-Struktur der ersten Verbindung liefern;
+ * Ist keine Verbindung vorhanden, wird NONE geliefert. */
+
+ CONN_ID i;
+
+ for( i = 0; i < Pool_Size; i++ )
+ {
+ if( My_Connections[i].sock != NONE ) return i;
+ }
+ return NONE;
+} /* Conn_First */
+
+
+GLOBAL CONN_ID
+Conn_Next( CONN_ID Idx )
+{
+ /* Naechste Verbindungs-Struktur liefern; existiert keine
+ * weitere, so wird NONE geliefert. */
+
+ CONN_ID i = NONE;
+
+ assert( Idx > NONE );
+
+ for( i = Idx + 1; i < Pool_Size; i++ )
+ {
+ if( My_Connections[i].sock != NONE ) return i;
+ }
+ return NONE;
+} /* Conn_Next */
+
+
+GLOBAL VOID
+Conn_SetOption( CONN_ID Idx, INT Option )
+{
+ /* Option fuer Verbindung setzen.
+ * Initial sind alle Optionen _nicht_ gesetzt. */
+
+ assert( Idx > NONE );
+ assert( Option != 0 );
+
+ My_Connections[Idx].options |= Option;
+} /* Conn_SetOption */
+
+
+GLOBAL VOID
+Conn_UnsetOption( CONN_ID Idx, INT Option )
+{
+ /* Option fuer Verbindung loeschen */
+
+ assert( Idx > NONE );
+ assert( Option != 0 );
+
+ My_Connections[Idx].options &= ~Option;
+} /* Conn_UnsetOption */
+
+
+GLOBAL INT
+Conn_Options( CONN_ID Idx )
+{
+ assert( Idx > NONE );
+ return My_Connections[Idx].options;
+} /* Conn_Options */
+
+
+GLOBAL time_t
+Conn_StartTime( CONN_ID Idx )
+{
+ /* Zeitpunkt des Link-Starts liefern (in Sekunden) */
+
+ assert( Idx > NONE );
+ return My_Connections[Idx].starttime;
+} /* Conn_Uptime */
+
+
+GLOBAL INT
+Conn_SendQ( CONN_ID Idx )
+{
+ /* Laenge der Daten im Schreibbuffer liefern */
+
+ assert( Idx > NONE );
+#ifdef USE_ZLIB
+ if( My_Connections[Idx].options & CONN_ZIP ) return My_Connections[Idx].zip.wdatalen;
+ else
+#endif
+ return My_Connections[Idx].wdatalen;
+} /* Conn_SendQ */
+
+
+GLOBAL LONG
+Conn_SendMsg( CONN_ID Idx )
+{
+ /* Anzahl gesendeter Nachrichten liefern */
+
+ assert( Idx > NONE );
+ return My_Connections[Idx].msg_out;
+} /* Conn_SendMsg */
+
+
+GLOBAL LONG
+Conn_SendBytes( CONN_ID Idx )
+{
+ /* Anzahl gesendeter Bytes (unkomprimiert) liefern */
+
+ assert( Idx > NONE );
+ return My_Connections[Idx].bytes_out;
+} /* Conn_SendBytes */
+
+
+GLOBAL INT
+Conn_RecvQ( CONN_ID Idx )
+{
+ /* Laenge der Daten im Lesebuffer liefern */
+
+ assert( Idx > NONE );
+#ifdef USE_ZLIB
+ if( My_Connections[Idx].options & CONN_ZIP ) return My_Connections[Idx].zip.rdatalen;
+ else
+#endif
+ return My_Connections[Idx].rdatalen;
+} /* Conn_RecvQ */
+
+
+GLOBAL LONG
+Conn_RecvMsg( CONN_ID Idx )
+{
+ /* Anzahl empfangener Nachrichten liefern */
+
+ assert( Idx > NONE );
+ return My_Connections[Idx].msg_in;
+} /* Conn_RecvMsg */
+
+
+GLOBAL LONG
+Conn_RecvBytes( CONN_ID Idx )
+{
+ /* Anzahl empfangener Bytes (unkomprimiert) liefern */
+
+ assert( Idx > NONE );
+ return My_Connections[Idx].bytes_in;
+} /* Conn_RecvBytes */
+
+
+GLOBAL VOID
+Conn_ResetWCounter( VOID )
+{
+ WCounter = 0;
+} /* Conn_ResetWCounter */
+
+
+GLOBAL LONG
+Conn_WCounter( VOID )
+{
+ return WCounter;
+} /* Conn_WCounter */
+
+
+/* -eof- */
blob - /dev/null
blob + 73d9f742a7cfae5f9dac9edfb7726a2bf196c0ef (mode 644)
--- /dev/null
+++ src/ngircd/conn-func.h
+/*
+ * ngIRCd -- The Next Generation IRC Daemon
+ * Copyright (c)2001,2002 by Alexander Barton (alex@barton.de)
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ * Please read the file COPYING, README and AUTHORS for more information.
+ *
+ * $Id: conn-func.h,v 1.1 2002/12/30 17:14:28 alex Exp $
+ *
+ * Connection management: Global functions (header)
+ */
+
+
+#ifndef __conn_func_h__
+#define __conn_func_h__
+
+
+/* Include the header conn.h if this header is _not_ included by any module
+ * containing connection handling functions. So other modules must only
+ * include this conn-func.h header. */
+#ifndef CONN_MODULE
+# include "conn.h"
+#endif
+
+
+GLOBAL VOID Conn_UpdateIdle PARAMS(( CONN_ID Idx ));
+GLOBAL time_t Conn_GetIdle PARAMS(( CONN_ID Idx ));
+GLOBAL time_t Conn_LastPing PARAMS(( CONN_ID Idx ));
+GLOBAL time_t Conn_StartTime PARAMS(( CONN_ID Idx ));
+GLOBAL INT Conn_SendQ PARAMS(( CONN_ID Idx ));
+GLOBAL INT Conn_RecvQ PARAMS(( CONN_ID Idx ));
+GLOBAL LONG Conn_SendMsg PARAMS(( CONN_ID Idx ));
+GLOBAL LONG Conn_RecvMsg PARAMS(( CONN_ID Idx ));
+GLOBAL LONG Conn_SendBytes PARAMS(( CONN_ID Idx ));
+GLOBAL LONG Conn_RecvBytes PARAMS(( CONN_ID Idx ));
+
+GLOBAL VOID Conn_SetPenalty PARAMS(( CONN_ID Idx, time_t Seconds ));
+GLOBAL VOID Conn_ResetPenalty PARAMS(( CONN_ID Idx ));
+
+GLOBAL VOID Conn_ClearFlags PARAMS(( VOID ));
+GLOBAL INT Conn_Flag PARAMS(( CONN_ID Idx ));
+GLOBAL VOID Conn_SetFlag PARAMS(( CONN_ID Idx, INT Flag ));
+
+GLOBAL CONN_ID Conn_First PARAMS(( VOID ));
+GLOBAL CONN_ID Conn_Next PARAMS(( CONN_ID Idx ));
+
+GLOBAL VOID Conn_SetOption PARAMS(( CONN_ID Idx, INT Option ));
+GLOBAL VOID Conn_UnsetOption PARAMS(( CONN_ID Idx, INT Option ));
+GLOBAL INT Conn_Options PARAMS(( CONN_ID Idx ));
+
+GLOBAL VOID Conn_ResetWCounter PARAMS(( VOID ));
+GLOBAL LONG Conn_WCounter PARAMS(( VOID ));
+
+
+#endif
+
+
+/* -eof- */