]> git.ipfire.org Git - thirdparty/squid.git/blame_incremental - src/comm/Read.h
Docs: Copyright updates for 2018 (#114)
[thirdparty/squid.git] / src / comm / Read.h
... / ...
CommitLineData
1/*
2 * Copyright (C) 1996-2018 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_COMM_READ_H
10#define _SQUID_COMM_READ_H
11
12#include "base/AsyncCall.h"
13#include "comm/forward.h"
14#include "CommCalls.h"
15#include "sbuf/forward.h"
16
17namespace Comm
18{
19
20/**
21 * Start monitoring for read.
22 *
23 * callback is scheduled when the read is possible,
24 * or on file descriptor close.
25 */
26void Read(const Comm::ConnectionPointer &conn, AsyncCall::Pointer &callback);
27
28/// whether the FD socket is being monitored for read
29bool MonitorsRead(int fd);
30
31/**
32 * Perform a read(2) on a connection immediately.
33 *
34 * If params.size is non-zero will limit size of the read to either
35 * the buffer free space or params.size, whichever is smallest.
36 *
37 * The returned flag is also placed in params.flag.
38 *
39 * \retval Comm::OK data has been read and placed in buf, amount in params.size
40 * \retval Comm::COMM_ERROR an error occured, the code is placed in params.xerrno
41 * \retval Comm::INPROGRESS unable to read at this time, or a minor error occured
42 * \retval Comm::ENDFILE 0-byte read has occured.
43 * Usually indicates the remote end has disconnected.
44 */
45Comm::Flag ReadNow(CommIoCbParams &params, SBuf &buf);
46
47/// Cancel the read pending on FD. No action if none pending.
48void ReadCancel(int fd, AsyncCall::Pointer &callback);
49
50/// callback handler to process an FD which is available for reading
51extern PF HandleRead;
52
53} // namespace Comm
54
55// Legacy API to be removed
56void comm_read_base(const Comm::ConnectionPointer &conn, char *buf, int len, AsyncCall::Pointer &callback);
57inline void comm_read(const Comm::ConnectionPointer &conn, char *buf, int len, AsyncCall::Pointer &callback)
58{
59 assert(buf != NULL);
60 comm_read_base(conn, buf, len, callback);
61}
62void comm_read_cancel(int fd, IOCB *callback, void *data);
63
64#endif /* _SQUID_COMM_READ_H */
65