// -*- mode: cpp; mode: fold -*-
-// Description /*{{{*/
-// $Id: http.h,v 1.1 1998/11/01 05:30:47 jgg Exp $
+// Description /*{{{*/// $Id: http.h,v 1.12 2002/04/18 05:09:38 jgg Exp $
+// $Id: http.h,v 1.12 2002/04/18 05:09:38 jgg Exp $
/* ######################################################################
HTTP Aquire Method - This is the HTTP aquire method for APT.
#define MAXLEN 360
+#include <iostream>
+
+using std::cout;
+using std::endl;
+
class HttpMethod;
class CircleBuf
unsigned long MaxGet;
struct timeval Start;
+ static unsigned long BwReadLimit;
+ static unsigned long BwTickReadData;
+ static struct timeval BwReadTick;
+ static const unsigned int BW_HZ;
+
unsigned long LeftRead()
{
unsigned long Sz = Size - (InP - OutP);
public:
- MD5Summation *MD5;
+ Hashes *Hash;
// Read data in
bool Read(int Fd);
void Stats();
CircleBuf(unsigned long Size);
- ~CircleBuf() {delete [] Buf;};
+ ~CircleBuf() {delete [] Buf; delete Hash;};
};
struct ServerState
unsigned int Result;
char Code[MAXLEN];
- // These are some statistics from the last parsed get line
+ // These are some statistics from the last parsed header lines
unsigned long Size;
signed long StartPos;
time_t Date;
+ bool HaveContent;
enum {Chunked,Stream,Closes} Encoding;
enum {Header, Data} State;
+ bool Persistent;
+
+ // This is a Persistent attribute of the server itself.
+ bool Pipeline;
HttpMethod *Owner;
bool HeaderLine(string Line);
bool Comp(URI Other) {return Other.Host == ServerName.Host && Other.Port == ServerName.Port;};
void Reset() {Major = 0; Minor = 0; Result = 0; Size = 0; StartPos = 0;
- Encoding = Closes; time(&Date); ServerFd = -1;};
- bool RunHeaders();
+ Encoding = Closes; time(&Date); ServerFd = -1;
+ Pipeline = true;};
+ int RunHeaders();
bool RunData();
bool Open();
bool Flush(ServerState *Srv);
bool ServerDie(ServerState *Srv);
int DealWithHeaders(FetchResult &Res,ServerState *Srv);
+
+ virtual bool Fetch(FetchItem *);
+ virtual bool Configuration(string Message);
+
+ // In the event of a fatal signal this file will be closed and timestamped.
+ static string FailFile;
+ static int FailFd;
+ static time_t FailTime;
+ static void SigTerm(int);
public:
- friend ServerState;
+ friend class ServerState;
- ServerState *Srv;
- int Depth;
FileFd *File;
+ ServerState *Server;
int Loop();
- HttpMethod() : pkgAcqMethod("1.2",SingleInstance | Pipeline | SendConfig)
+ HttpMethod() : pkgAcqMethod("1.2",Pipeline | SendConfig)
{
- Depth = 0;
- Srv = 0;
File = 0;
- Depth = 0;
+ Server = 0;
};
};