// // HtNNTP.h // // HtNNTP: Class for NNTP messaging (derived from Transport) // // Gabriele Bartolini - Prato - Italia // started: 01.08.2000 // // // Part of the ht://Dig package // Copyright (c) 1995-2004 The ht://Dig Group // For copyright details, see the file COPYING in your distribution // or the General GNU Library General Public License (LGPL) version 2 or later // // // $Id: HtNNTP.h,v 1.5 2004/05/28 13:15:23 lha Exp $ // #ifndef _HTNNTP_H #define _HTNNTP_H #ifdef HAVE_CONFIG_H #include "htconfig.h" #endif #include "Transport.h" #include "URL.h" #include "htString.h" // for HtNNTP::ShowStatistics #ifdef HAVE_STD #include #ifdef HAVE_NAMESPACES using namespace std; #endif #else #include #endif /* HAVE_STD */ // In advance declarations class HtNNTP; class HtNNTP_Response : public Transport_Response { friend class HtNNTP; // declaring friendship public: /////// // Construction / Destruction /////// HtNNTP_Response(); ~HtNNTP_Response(); /////// // Interface /////// // Reset void Reset(); protected: // Other header information }; class HtNNTP : public Transport { public: /////// // Construction/Destruction /////// HtNNTP(); ~HtNNTP(); /////// // Sends an NNTP request message /////// // manages a Transport request (method inherited from Transport class) virtual DocStatus Request (); /////// // Control of member the variables /////// /////// // Interface for resource retrieving /////// // Set and get the document to be retrieved void SetRequestURL(URL &u) { _url = u;} URL GetRequestURL () { return _url;} Transport_Response *GetResponse() { if (_response._status_code != -1) return &_response; else return NULL; } // Get the document status virtual DocStatus GetDocumentStatus() { return GetDocumentStatus (_response); } // It's a static method static DocStatus GetDocumentStatus(HtNNTP_Response &); // Manage statistics static int GetTotSeconds () { return _tot_seconds; } static int GetTotRequests () { return _tot_requests; } static int GetTotBytes () { return _tot_bytes; } static double GetAverageRequestTime () { return _tot_seconds?( ((double) _tot_seconds) / _tot_requests) : 0; } static float GetAverageSpeed () { return _tot_bytes?( ((double) _tot_bytes) / _tot_seconds) : 0; } static void ResetStatistics () { _tot_seconds=0; _tot_requests=0; _tot_bytes=0;} // Show stats static ostream &ShowStatistics (ostream &out); // Proxy settings void SetProxy(int aUse) { _useproxy=aUse; } protected: /////// // Member attributes /////// /////// // NNTP single Request information (Member attributes) /////// int _bytes_read; // Bytes read URL _url; // URL to retrieve int _useproxy; // Shall we use a proxy? /////// // NNTP Response information /////// HtNNTP_Response _response; // Object where response // information will be stored into /////// // Set the string of the command containing the request /////// void SetRequestCommand(String &); /////// // Parse the header returned by the server /////// int ParseHeader(); /////// // Read the body returned by the server /////// int ReadBody(); /////// // Static attributes and methods /////// static int _tot_seconds; // Requests last (in seconds) static int _tot_requests; // Number of requests static int _tot_bytes; // Number of bytes read }; #endif