mirror of
				https://github.com/osmarks/ngircd.git
				synced 2025-10-31 14:02:59 +00:00 
			
		
		
		
	- Reorganized code for new modules "conn-func.c" and "conn-func.h".
This commit is contained in:
		| @@ -14,12 +14,12 @@ | |||||||
|  |  | ||||||
| #include "portab.h" | #include "portab.h" | ||||||
|  |  | ||||||
| #define __conn_zip_c__ | #define CONN_MODULE | ||||||
|  |  | ||||||
|  |  | ||||||
| #ifdef USE_ZLIB | #ifdef USE_ZLIB | ||||||
|  |  | ||||||
| static char UNUSED id[] = "$Id: conn-zip.c,v 1.1 2002/12/30 16:07:23 alex Exp $"; | static char UNUSED id[] = "$Id: conn-zip.c,v 1.2 2002/12/30 17:15:06 alex Exp $"; | ||||||
|  |  | ||||||
| #include "imp.h" | #include "imp.h" | ||||||
| #include <assert.h> | #include <assert.h> | ||||||
| @@ -27,6 +27,7 @@ static char UNUSED id[] = "$Id: conn-zip.c,v 1.1 2002/12/30 16:07:23 alex Exp $" | |||||||
| #include <zlib.h> | #include <zlib.h> | ||||||
|  |  | ||||||
| #include "conn.h" | #include "conn.h" | ||||||
|  | #include "conn-func.h" | ||||||
| #include "log.h" | #include "log.h" | ||||||
|  |  | ||||||
| #include "exp.h" | #include "exp.h" | ||||||
|   | |||||||
| @@ -12,11 +12,11 @@ | |||||||
|  */ |  */ | ||||||
|  |  | ||||||
|  |  | ||||||
| #define __conn_c__ | #define CONN_MODULE | ||||||
|  |  | ||||||
| #include "portab.h" | #include "portab.h" | ||||||
|  |  | ||||||
| static char UNUSED id[] = "$Id: conn.c,v 1.112 2002/12/30 16:07:23 alex Exp $"; | static char UNUSED id[] = "$Id: conn.c,v 1.113 2002/12/30 17:14:59 alex Exp $"; | ||||||
|  |  | ||||||
| #include "imp.h" | #include "imp.h" | ||||||
| #include <assert.h> | #include <assert.h> | ||||||
| @@ -54,6 +54,7 @@ static char UNUSED id[] = "$Id: conn.c,v 1.112 2002/12/30 16:07:23 alex Exp $"; | |||||||
| #include "client.h" | #include "client.h" | ||||||
| #include "conf.h" | #include "conf.h" | ||||||
| #include "conn-zip.h" | #include "conn-zip.h" | ||||||
|  | #include "conn-func.h" | ||||||
| #include "log.h" | #include "log.h" | ||||||
| #include "parse.h" | #include "parse.h" | ||||||
| #include "tool.h" | #include "tool.h" | ||||||
| @@ -82,8 +83,6 @@ LOCAL fd_set My_Listeners; | |||||||
| LOCAL fd_set My_Sockets; | LOCAL fd_set My_Sockets; | ||||||
| LOCAL fd_set My_Connects; | LOCAL fd_set My_Connects; | ||||||
|  |  | ||||||
| LOCAL LONG WCounter; |  | ||||||
|  |  | ||||||
|  |  | ||||||
| GLOBAL VOID | GLOBAL VOID | ||||||
| Conn_Init( VOID ) | Conn_Init( VOID ) | ||||||
| @@ -615,252 +614,6 @@ Conn_Close( CONN_ID Idx, CHAR *LogMsg, CHAR *FwdMsg, BOOLEAN InformClient ) | |||||||
| } /* Conn_Close */ | } /* Conn_Close */ | ||||||
|  |  | ||||||
|  |  | ||||||
| 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 */ |  | ||||||
|  |  | ||||||
|  |  | ||||||
| LOCAL BOOLEAN | LOCAL BOOLEAN | ||||||
| Try_Write( CONN_ID Idx ) | Try_Write( CONN_ID Idx ) | ||||||
| { | { | ||||||
|   | |||||||
| @@ -8,7 +8,7 @@ | |||||||
|  * (at your option) any later version. |  * (at your option) any later version. | ||||||
|  * Please read the file COPYING, README and AUTHORS for more information. |  * Please read the file COPYING, README and AUTHORS for more information. | ||||||
|  * |  * | ||||||
|  * $Id: conn.h,v 1.28 2002/12/30 16:07:23 alex Exp $ |  * $Id: conn.h,v 1.29 2002/12/30 17:14:59 alex Exp $ | ||||||
|  * |  * | ||||||
|  * Connection management (header) |  * Connection management (header) | ||||||
|  */ |  */ | ||||||
| @@ -29,7 +29,7 @@ | |||||||
| typedef INT CONN_ID; | typedef INT CONN_ID; | ||||||
|  |  | ||||||
|  |  | ||||||
| #if defined(__conn_c__) || defined(__conn_zip_c__) | #ifdef CONN_MODULE | ||||||
|  |  | ||||||
| #include "defines.h" | #include "defines.h" | ||||||
| #include "resolve.h" | #include "resolve.h" | ||||||
| @@ -74,8 +74,9 @@ typedef struct _Connection | |||||||
|  |  | ||||||
| GLOBAL CONNECTION *My_Connections; | GLOBAL CONNECTION *My_Connections; | ||||||
| GLOBAL CONN_ID Pool_Size; | GLOBAL CONN_ID Pool_Size; | ||||||
|  | GLOBAL LONG WCounter; | ||||||
|  |  | ||||||
| #endif /* defined() */ | #endif /* CONN_MODULE */ | ||||||
|  |  | ||||||
|  |  | ||||||
| GLOBAL VOID Conn_Init PARAMS((VOID )); | GLOBAL VOID Conn_Init PARAMS((VOID )); | ||||||
| @@ -93,34 +94,6 @@ GLOBAL BOOLEAN Conn_WriteStr PARAMS(( CONN_ID Idx, CHAR *Format, ... )); | |||||||
|  |  | ||||||
| GLOBAL VOID Conn_Close PARAMS(( CONN_ID Idx, CHAR *LogMsg, CHAR *FwdMsg, BOOLEAN InformClient )); | GLOBAL VOID Conn_Close PARAMS(( CONN_ID Idx, CHAR *LogMsg, CHAR *FwdMsg, BOOLEAN InformClient )); | ||||||
|  |  | ||||||
| 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 )); |  | ||||||
|  |  | ||||||
|  |  | ||||||
| GLOBAL INT Conn_MaxFD; | GLOBAL INT Conn_MaxFD; | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Alexander Barton
					Alexander Barton