+++ /dev/null
-/* $Id: host.h 7778 2008-04-17 21:27:22Z iulius $
-**
-** The public interface to the Host class.
-**
-** Written by James Brister <brister@vix.com>
-**
-** The Host class represents the remote news system that we're feeding. A
-** Host object has possibly multiple connections to the remote system which
-** it sends articles down. It is given the articles by other objects
-** (typically the InnListener), and once taken it assumes all responsibility
-** for transmission or temporary storage on network failures etc.
-*/
-
-#if ! defined ( host_h__ )
-#define host_h__
-
-
-#include <stdio.h>
-
-#include "misc.h"
-
-/*
- * Functions from elsewhere used by host.c
- */
-
-extern void mainLogStatus (FILE *fp) ;
-
-
-/*
- * Functions used by the InnListener
- */
-
-
-/*
- * Create a new Host object.
- *
- * NAME is the name that INN uses.
- * IPNAME is the name the networking code uses (or the ascii dotted quad
- * IP address).
- * ARTTIMEOUT is the max amount of time we'll wait for a new article
- * from INN before considering the connection unused and we'll close
- * down.
- * RESPTIMEOUT is the max amount of time we'll wait for any reponse
- * from a remote. Past this we'll close down the network connection.
- * INITIALCXNS is the number of Connections to create at Host creation time.
- * MAXCXNS is the maximum number of parallel connections to the
- * remote host we can run at any one time.
- * MAXCHECK is the maximum number of nntp CHECK commands to be outstanding
- * on a connection before opening up a new connection (or refusing
- * new articles if we get to MAXCXNS).
- * PORTNUM is the port number on the remote host we should talk to.
- * CLOSEPERIOD is the number of seconds after connecting that the
- * connections should be closed down and reinitialized (due to problems
- * with old NNTP servers that hold history files open. Value of 0 means
- * dont close down.
- * STREAMING is a boolean flag to tell if the Host wants its Connections to
- * do streaming or not.
- * LOWPASSHIGH is the high value for the low-pass filter.
- * LOWPASSLOW is the low value for the low-pass filter.
- */
-
-void configHosts (bool talkSelf) ;
-
-/* print some debugging info. */
-void gPrintHostInfo (FILE *fp, unsigned int indentAmt) ;
-void printHostInfo (Host host, FILE *fp, unsigned int indentAmt) ;
-
-/* Delete the host object. Drops all the active connections immediately
- (i.e. no QUIT) . */
-void delHost (Host host) ;
-
-/* Get a new default host object */
-Host newDefaultHost (InnListener listener,
- const char *name);
-
-/* gently close down all the host's connections (issue QUITs). */
-void hostClose (Host host) ;
-
-/* gently close down all active connections (issue QUITs) and recreate
- them immediately */
-void hostFlush (Host host) ;
-
-/* have the HOST transmit the ARTICLE, or, failing that, store article
- information for later attempts. */
-void hostSendArticle (Host host, Article article) ;
-
-/* return an IP address for the host */
-struct sockaddr *hostIpAddr (Host host, int family) ;
-
-/* Delete all IPv4 addresses from the address list */
-void hostDeleteIpv4Addr (Host host);
-
-/* mark the current IP address as failed and rotate to the next one */
-void hostIpFailed (Host host) ;
-
-/*
- * Functions used by the Connection to indicate Connection state.
- */
-
-/* called by the Host's connection when the remote is refusing
- postings. Code 400 in the banner */
-void hostCxnBlocked (Host host, Connection cxn, char *reason) ;
-
-/* called by the Connection when it has determined if the remote supports
- the streaming extension or not. */
-void hostRemoteStreams (Host host, Connection cxn, bool doesStream) ;
-
-/* Called by the connection when it is no longer connected to the
- remote. Perhaps due to getting a code 400 to an IHAVE. */
-void hostCxnDead (Host host, Connection cxn) ;
-
-/* Called when the Connection deletes itself */
-bool hostCxnGone (Host host, Connection cxn) ;
-
-/* Called when the Connection goes to sleep. */
-void hostCxnSleeping (Host host, Connection cxn) ;
-
-/* Called when the Connection starts waiting for articles. */
-void hostCxnWaiting (Host host, Connection cxn) ;
-
-
-
-/* Called when the connection has sent an IHAVE or a CHECK, or a TAKETHIS
- when in no-check mode.*/
-void hostArticleOffered (Host host, Connection cxn) ;
-
-/* called by the Connection when the article was transferred. */
-void hostArticleAccepted (Host host, Connection cxn, Article article) ;
-
-/* Called by the connection when the remote answered 435 or 438 */
-void hostArticleNotWanted (Host host, Connection cxn, Article article) ;
-
-/* Called by the connection when the remote answered 437 or 439 */
-void hostArticleRejected (Host host, Connection cxn, Article article) ;
-
-/* Called when the connection when the remote answered 400 or 431 or 436 */
-void hostArticleDeferred (Host host, Connection cxn, Article article) ;
-
-/* Called by the connection if it discovers the file is gone. */
-void hostArticleIsMissing (Host host, Connection cxn, Article article) ;
-
-
-/* Called by the connection when it wants to defer articles, but it
- doesn't want the Host to queue any news on it. */
-void hostTakeBackArticle (Host host, Connection cxn, Article article) ;
-
-
-/* called by the Connection when it is idle and wants to get things
- moving. Returns true if there was something to do and the Host called
- cxnQueueArticle() . */
-bool hostGimmeArticle (Host host, Connection cxn) ;
-
-/* get the name that INN uses for this host */
-const char *hostPeerName (Host host) ;
-
-/* get the bindaddress */
-const struct sockaddr_in *hostBindAddr(Host host) ;
-#ifdef HAVE_INET6
-const struct sockaddr_in6 *hostBindAddr6(Host host) ;
-int hostAddrFamily (Host host);
-#endif
-
-/* get the username and password for authentication */
-const char *hostUsername (Host host) ;
-const char *hostPassword (Host host) ;
-
-/* if VAL is true then each time the host logs its stats all its
- connections will too. */
-void hostLogConnectionStats (bool val) ;
-bool hostLogConnectionStatsP (void) ;
-
-#if 0
-/* Set the frequency (in seconds) with which we log statistics */
-void hostSetStatsPeriod (unsigned int period) ;
-#endif
-
-/* return whether or not the Connections should attempt to stream. */
-bool hostWantsStreaming (Host host) ;
-
-/* return maxChecks */
-unsigned int hostmaxChecks (Host host);
-
-/* return if we should drop deferred articles */
-bool hostDropDeferred (Host host);
-
-/* return the maximum number of CHECKs that can be outstanding */
-unsigned int hostMaxChecks (Host host) ;
-
-/* Called by the Host's connections when they go into (true) or out of
- (false) no-CHECK mode. */
-void hostLogNoCheckMode (Host host, bool on, double low, double cur, double high) ;
-
-/* calculate host backlog statistics */
-void gCalcHostBlStat (void) ;
-
-/* calculate host global statistics */
-void gHostStats (void) ;
-
-/* set the pathname of the file to use instead of innfeed.status */
-void hostSetStatusFile (const char *filename) ;
-
-/* function called when config file is loaded. */
-int hostConfigLoadCbk (void *data) ;
-
-void hostChkCxns(TimeoutId tid, void *data);
-
-#endif /* host_h__ */