1 /*
2  * Copyright (C) 1996-2021 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:
Request(int aRequestorId,unsigned int aRequestId)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 
46