]> git.ipfire.org Git - thirdparty/squid.git/blob - src/ipc/Response.h
Merged from trunk
[thirdparty/squid.git] / src / ipc / Response.h
1 /*
2 * Copyright (C) 1996-2015 The Squid Software Foundation and contributors
3 *
4 * Squid software is distributed under GPLv2+ license and includes
5 * contributions from numerous individuals and organizations.
6 * Please see the COPYING and CONTRIBUTORS files for details.
7 */
8
9 /* DEBUG: section 54 Interprocess Communication */
10
11 #ifndef SQUID_IPC_RESPONSE_H
12 #define SQUID_IPC_RESPONSE_H
13
14 #include "base/RefCount.h"
15 #include "ipc/forward.h"
16
17 namespace Ipc
18 {
19
20 /// A response to Ipc::Request.
21 class Response: public RefCountable
22 {
23 public:
24 typedef RefCount<Response> Pointer;
25
26 public:
27 explicit Response(unsigned int aRequestId):
28 requestId(aRequestId) {}
29
30 virtual void pack(TypedMsgHdr& msg) const = 0; ///< prepare for sendmsg()
31 virtual Pointer clone() const = 0; ///< returns a copy of this
32
33 private:
34 Response(const Response&); // not implemented
35 Response& operator= (const Response&); // not implemented
36
37 public:
38 unsigned int requestId; ///< ID of request we are responding to
39 };
40
41 inline
42 std::ostream& operator << (std::ostream &os, const Response& response)
43 {
44 os << "[response.requestId %u]" << response.requestId << '}';
45 return os;
46 }
47
48 } // namespace Ipc
49
50 #endif /* SQUID_IPC_RESPONSE_H */
51