ESA JPIP server  0.1
protocol.h
Go to the documentation of this file.
1 #ifndef _HTTP_PROTOCOL_H_
2 #define _HTTP_PROTOCOL_H_
3 
4 
5 #include <string>
6 #include <iostream>
7 #include <assert.h>
8 
9 
10 namespace http
11 {
12 
13  using namespace std;
14 
15 
20  class Protocol
21  {
22  private:
25 
26  public:
31  static const char CRLF[];
32 
33 
40  Protocol(int mayorVersion = 1, int minorVersion = 1)
41  {
42  assert(((mayorVersion == 1) && (minorVersion == 0)) ||
43  ((mayorVersion == 1) && (minorVersion == 1)));
44 
45  mayorVersion_ = mayorVersion;
46  minorVersion_ = minorVersion;
47  }
48 
52  Protocol(const Protocol& protocol)
53  {
54  mayorVersion_ = protocol.mayorVersion_;
55  minorVersion_ = protocol.minorVersion_;
56  }
57 
58  friend ostream& operator << (ostream &out, const Protocol &protocol)
59  {
60  return out << "HTTP/" << protocol.mayorVersion_ << "." << protocol.minorVersion_;
61  }
62 
63  friend istream& operator >> (istream &in, Protocol &protocol)
64  {
65  string cad;
66 
67  in >> cad;
68  if(!cad.compare(0, 8, "HTTP/1.0")) protocol = Protocol(1, 0);
69  else if(!cad.compare(0, 8, "HTTP/1.1")) protocol = Protocol(1, 1);
70  else in.setstate(istream::failbit);
71 
72  return in;
73  }
74 
78  int mayorVersion() const
79  {
80  return mayorVersion_;
81  }
82 
86  int minorVersion() const
87  {
88  return minorVersion_;
89  }
90  };
91 
92 }
93 
94 #endif /* _HTTP_PROTOCOL_H_ */
Protocol(const Protocol &protocol)
Copy constructor.
Definition: protocol.h:52
int minorVersion() const
Returns the minor number of the protocol version.
Definition: protocol.h:86
STL namespace.
Contains the definition of a set of classes for working easily with the protocol HTTP.
Definition: header.cc:4
int mayorVersion() const
Returns the mayor number of the protocol version.
Definition: protocol.h:78
Protocol(int mayorVersion=1, int minorVersion=1)
Initialized the protocl with the given version.
Definition: protocol.h:40
Class used to identify the HTTP protocol.
Definition: protocol.h:20
int mayorVersion_
Mayor protocol version.
Definition: protocol.h:23
int minorVersion_
Minor protocol version.
Definition: protocol.h:24
istream & operator>>(istream &in, Request &request)
Definition: request.cc:51
ostream & operator<<(ostream &out, const Request &request)
Definition: request.cc:65