diff options
Diffstat (limited to 'debian/htdig/htdig-3.2.0b6/htnet/HtNNTP.h')
-rw-r--r-- | debian/htdig/htdig-3.2.0b6/htnet/HtNNTP.h | 195 |
1 files changed, 195 insertions, 0 deletions
diff --git a/debian/htdig/htdig-3.2.0b6/htnet/HtNNTP.h b/debian/htdig/htdig-3.2.0b6/htnet/HtNNTP.h new file mode 100644 index 00000000..07b0c87b --- /dev/null +++ b/debian/htdig/htdig-3.2.0b6/htnet/HtNNTP.h @@ -0,0 +1,195 @@ +// +// HtNNTP.h +// +// HtNNTP: Class for NNTP messaging (derived from Transport) +// +// Gabriele Bartolini - Prato - Italia +// started: 01.08.2000 +// +// +// Part of the ht://Dig package <http://www.htdig.org/> +// 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 +// <http://www.gnu.org/copyleft/lgpl.html> +// +// $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 <iostream> +#ifdef HAVE_NAMESPACES +using namespace std; +#endif +#else +#include <iostream.h> +#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 + |