/*----- function predeclarations -----*/ void conn_maybe_write(Conn *conn); void conn_make_some_xmits(Conn *conn); void *conn_write_some_xmits(Conn *conn); void xmit_free(XmitDetails *d); #define SMS(newstate, periods, why) \ (statemc_setstate(sm_##newstate,(periods),#newstate,(why))) void statemc_setstate(StateMachineState newsms, int periods, const char *forlog, const char *why); void statemc_start_flush(const char *why); /* Normal => Flushing */ void spawn_inndcomm_flush(const char *why); /* Moved => Flushing */ int trigger_flush_ok(const char *why /* 0 means timeout */); /* => Flushing,FLUSHING, ret 1; or ret 0 */ void article_done(Article *art, int whichcount); void check_assign_articles(void); void queue_check_input_done(void); void check_reading_pause_resume(InputFile *ipf); void statemc_check_flushing_done(void); void statemc_check_backlog_done(void); void postfork(void); void period(void); void open_defer(void); void close_defer(void); void search_backlog_file(void); void preterminate(void); void raise_default(int signo) NORET; void inputfile_reading_start(InputFile *ipf); void inputfile_reading_stop(InputFile *ipf); void inputfile_reading_pause(InputFile *ipf); void inputfile_reading_resume(InputFile *ipf); /* pause and resume are idempotent, and no-op if not done _reading_start */ void filemon_start(InputFile *ipf); void filemon_stop(InputFile *ipf); void tailing_make_readable(InputFile *ipf); void vconnfail(Conn *conn, const char *fmt, va_list al) PRINTF(2,0); void connfail(Conn *conn, const char *fmt, ...) PRINTF(2,3); extern const oop_rd_style peer_rd_style; extern oop_rd_call peer_rd_err, peer_rd_ok;