]>
git.saurik.com Git - apt.git/blob - methods/http.h
1 // -*- mode: cpp; mode: fold -*-
3 // $Id: http.h,v 1.1 1998/11/01 05:30:47 jgg Exp $
4 /* ######################################################################
6 HTTP Aquire Method - This is the HTTP aquire method for APT.
8 ##################################################################### */
29 unsigned long LeftRead()
31 unsigned long Sz
= Size
- (InP
- OutP
);
32 if (Sz
> Size
- (InP%Size
))
33 Sz
= Size
- (InP%Size
);
36 unsigned long LeftWrite()
38 unsigned long Sz
= InP
- OutP
;
41 if (Sz
> Size
- (OutP%Size
))
42 Sz
= Size
- (OutP%Size
);
53 bool Read(string Data
);
57 bool WriteTillEl(string
&Data
,bool Single
= false);
59 // Control the write limit
60 void Limit(long Max
) {if (Max
== -1) MaxGet
= 0-1; else MaxGet
= OutP
+ Max
;}
61 bool IsLimit() {return MaxGet
== OutP
;};
62 void Print() {cout
<< MaxGet
<< ',' << OutP
<< endl
;};
64 // Test for free space in the buffer
65 bool ReadSpace() {return Size
- (InP
- OutP
) > 0;};
66 bool WriteSpace() {return InP
- OutP
> 0;};
72 CircleBuf(unsigned long Size
);
73 ~CircleBuf() {delete [] Buf
;};
78 // This is the last parsed Header Line
84 // These are some statistics from the last parsed get line
88 enum {Chunked
,Stream
,Closes
} Encoding
;
89 enum {Header
, Data
} State
;
93 // This is the connection itself. Output is data FROM the server
99 bool HeaderLine(string Line
);
100 bool Comp(URI Other
) {return Other
.Host
== ServerName
.Host
&& Other
.Port
== ServerName
.Port
;};
101 void Reset() {Major
= 0; Minor
= 0; Result
= 0; Size
= 0; StartPos
= 0;
102 Encoding
= Closes
; time(&Date
); ServerFd
= -1;};
109 ServerState(URI Srv
,HttpMethod
*Owner
);
110 ~ServerState() {Close();};
113 class HttpMethod
: public pkgAcqMethod
115 void SendReq(FetchItem
*Itm
,CircleBuf
&Out
);
116 bool Go(bool ToFile
,ServerState
*Srv
);
117 bool Flush(ServerState
*Srv
);
118 bool ServerDie(ServerState
*Srv
);
119 int DealWithHeaders(FetchResult
&Res
,ServerState
*Srv
);
130 HttpMethod() : pkgAcqMethod("1.2",SingleInstance
| Pipeline
| SendConfig
)