~ubuntu-branches/ubuntu/trusty/libecap/trusty

« back to all changes in this revision

Viewing changes to src/libecap/common/header.h

  • Committer: Package Import Robot
  • Author(s): Luigi Gangitano
  • Date: 2012-12-05 20:11:04 UTC
  • Revision ID: package-import@ubuntu.com-20121205201104-i0lk2ymbdre6k4dl
Tags: upstream-0.2.0
ImportĀ upstreamĀ versionĀ 0.2.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* (C) 2008 The Measurement Factory */
 
2
 
 
3
#ifndef LIBECAP__COMMON__HEADER_H
 
4
#define LIBECAP__COMMON__HEADER_H
 
5
 
 
6
#include <libecap/common/forward.h>
 
7
 
 
8
namespace libecap {
 
9
 
 
10
class Header {
 
11
        public:
 
12
                typedef Area Value;
 
13
 
 
14
        public:
 
15
                virtual ~Header() {}
 
16
 
 
17
                virtual bool hasAny(const Name &name) const = 0;
 
18
                //virtual bool hasOne(const Name &name, const Value &value) const = 0;
 
19
                virtual Value value(const Name &name) const = 0; // empty if none
 
20
 
 
21
                virtual void add(const Name &name, const Value &value) = 0;
 
22
                //virtual void removeOne(const Name &name, const Value &value) = 0;
 
23
                virtual void removeAny(const Name &name) = 0;
 
24
 
 
25
                // visit all header fields, one by one
 
26
                virtual void visitEach(NamedValueVisitor &visitor) const = 0;
 
27
 
 
28
                virtual Area image() const = 0;
 
29
                virtual void parse(const Area &buf) = 0; // throws on failures
 
30
};
 
31
 
 
32
class FirstLine {
 
33
        public:
 
34
                virtual ~FirstLine() {}
 
35
 
 
36
                virtual Version version() const = 0;
 
37
                virtual void version(const Version &aVersion) = 0;
 
38
                virtual Name protocol() const = 0;
 
39
                virtual void protocol(const Name &aProtocol) = 0;
 
40
};
 
41
 
 
42
class RequestLine: public FirstLine {
 
43
        public:
 
44
                virtual ~RequestLine() {}
 
45
 
 
46
                virtual void uri(const Area &aUri) = 0;
 
47
                virtual Area uri() const = 0;
 
48
 
 
49
                virtual void method(const Name &aMethod) = 0;
 
50
                virtual Name method() const = 0;
 
51
};
 
52
 
 
53
class StatusLine: public FirstLine {
 
54
        public:
 
55
                virtual ~StatusLine() {}
 
56
 
 
57
                virtual void statusCode(int code) = 0;
 
58
                virtual int statusCode() const = 0;
 
59
 
 
60
                virtual void reasonPhrase(const Area &phrase) = 0;
 
61
                virtual Area reasonPhrase() const = 0;
 
62
};
 
63
 
 
64
} // namespace libecap
 
65
 
 
66
#endif