]> git.ipfire.org Git - thirdparty/squid.git/blob - src/DiskIO/DiskThreads/CommIO.h
Source Format Enforcement (#763)
[thirdparty/squid.git] / src / DiskIO / DiskThreads / CommIO.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 #ifndef SQUID_SRC_DISKIO_DISKTHREADS_COMMIO_H
10 #define SQUID_SRC_DISKIO_DISKTHREADS_COMMIO_H
11
12 #include "fatal.h"
13 #include "fde.h"
14 #include "globals.h"
15
16 class CommIO
17 {
18
19 public:
20 static inline void NotifyIOCompleted();
21 static void ResetNotifications();
22 static void Initialize();
23 static void NotifyIOClose();
24
25 private:
26 static void NULLFDHandler(int, void *);
27 static void FlushPipe();
28 static bool Initialized;
29 static bool DoneSignalled;
30 static int DoneFD;
31 static int DoneReadFD;
32 };
33
34 /* Inline code. TODO: make structured approach to inlining */
35 void
36 CommIO::NotifyIOCompleted()
37 {
38 if (!Initialized) {
39 fatalf("Disk Threads I/O pipes not initialized before first use.");
40 }
41
42 if (!DoneSignalled) {
43 DoneSignalled = true;
44 FD_WRITE_METHOD(DoneFD, "!", 1);
45 }
46 };
47
48 #endif /* SQUID_SRC_DISKIO_DISKTHREADS_COMMIO_H */
49