]> git.ipfire.org Git - thirdparty/squid.git/blob - src/mgr/Request.cc
SourceFormat Enforcement
[thirdparty/squid.git] / src / mgr / Request.cc
1 /*
2 * Copyright (C) 1996-2014 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 16 Cache Manager API */
10
11 #include "squid.h"
12 #include "base/TextException.h"
13 #include "comm/Connection.h"
14 #include "ipc/Messages.h"
15 #include "ipc/TypedMsgHdr.h"
16 #include "mgr/ActionParams.h"
17 #include "mgr/Request.h"
18
19 Mgr::Request::Request(int aRequestorId, unsigned int aRequestId, const Comm::ConnectionPointer &aConn,
20 const ActionParams &aParams):
21 Ipc::Request(aRequestorId, aRequestId),
22 conn(aConn),
23 params(aParams)
24 {
25 Must(requestorId > 0);
26 }
27
28 Mgr::Request::Request(const Request& request):
29 Ipc::Request(request.requestorId, request.requestId),
30 conn(request.conn), params(request.params)
31 {
32 }
33
34 Mgr::Request::Request(const Ipc::TypedMsgHdr& msg):
35 Ipc::Request(0, 0)
36 {
37 msg.checkType(Ipc::mtCacheMgrRequest);
38 msg.getPod(requestorId);
39 msg.getPod(requestId);
40 params = ActionParams(msg);
41
42 conn = new Comm::Connection;
43 conn->fd = msg.getFd();
44 // For now we just have the FD.
45 // Address and connectio details wil be pulled/imported by the component later
46 }
47
48 void
49 Mgr::Request::pack(Ipc::TypedMsgHdr& msg) const
50 {
51 msg.setType(Ipc::mtCacheMgrRequest);
52 msg.putPod(requestorId);
53 msg.putPod(requestId);
54 params.pack(msg);
55
56 msg.putFd(conn->fd);
57 }
58
59 Ipc::Request::Pointer
60 Mgr::Request::clone() const
61 {
62 return new Request(*this);
63 }
64