]> git.ipfire.org Git - thirdparty/squid.git/blob - src/ipc/Strand.h
Source Format Enforcement (#763)
[thirdparty/squid.git] / src / ipc / Strand.h
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_STRAND_H
12 #define SQUID_IPC_STRAND_H
13
14 #include "ipc/forward.h"
15 #include "ipc/Port.h"
16 #include "mgr/forward.h"
17 #if SQUID_SNMP
18 #include "snmp/forward.h"
19 #endif
20
21 namespace Ipc
22 {
23
24 class StrandCoord;
25
26 /// Receives coordination messages on behalf of its process or thread
27 class Strand: public Port
28 {
29 CBDATA_CLASS(Strand);
30
31 public:
32 Strand();
33
34 virtual void start(); // Port (AsyncJob) API
35
36 protected:
37 virtual void timedout(); // Port (UsdOp) API
38 virtual void receive(const TypedMsgHdr &message); // Port API
39
40 private:
41 void registerSelf(); /// let Coordinator know this strand exists
42 void handleRegistrationResponse(const StrandMessage &);
43 void handleCacheMgrRequest(const Mgr::Request& request);
44 void handleCacheMgrResponse(const Mgr::Response& response);
45 #if SQUID_SNMP
46 void handleSnmpRequest(const Snmp::Request& request);
47 void handleSnmpResponse(const Snmp::Response& response);
48 #endif
49
50 private:
51 bool isRegistered; ///< whether Coordinator ACKed registration (unused)
52
53 private:
54 Strand(const Strand&); // not implemented
55 Strand& operator =(const Strand&); // not implemented
56 };
57
58 }
59
60 #endif /* SQUID_IPC_STRAND_H */
61