]> git.ipfire.org Git - thirdparty/squid.git/blob - src/ipc/Request.h
243dc87246a714cf28848092a3498463596e3cdf
[thirdparty/squid.git] / src / ipc / Request.h
1 /*
2 * Copyright (C) 1996-2017 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_REQUEST_H
12 #define SQUID_IPC_REQUEST_H
13
14 #include "base/RefCount.h"
15 #include "ipc/forward.h"
16
17 namespace Ipc
18 {
19
20 /// IPC request
21 class Request: public RefCountable
22 {
23 public:
24 typedef RefCount<Request> Pointer;
25
26 public:
27 Request(int aRequestorId, unsigned int aRequestId):
28 requestorId(aRequestorId), 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 Request(const Request&); // not implemented
35 Request& operator= (const Request&); // not implemented
36
37 public:
38 int requestorId; ///< kidId of the requestor; used for response destination
39 unsigned int requestId; ///< unique for sender; matches request w/ response
40 };
41
42 } // namespace Ipc
43
44 #endif /* SQUID_IPC_REQUEST_H */
45