blob: ddc783aa9d15907a91c9806fc07ebd6d6638f0a6 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
#pragma once
//////////////////////////////////////////////////////////////
/// \file
/// \brief Definitions for asynchonous connection queue
#include "base.h"
#include "event_loop.h"
#include "netaddr.h"
#include <util/datetime/base.h>
#include <util/generic/algorithm.h>
#include <util/generic/list.h>
#include <util/generic/map.h>
#include <util/generic/set.h>
#include <util/generic/string.h>
#include <util/generic/vector.h>
#include <util/network/address.h>
#include <util/network/ip.h>
#include <util/network/poller.h>
#include <util/string/util.h>
#include <util/system/condvar.h>
#include <util/system/mutex.h>
#include <util/system/thread.h>
#include <util/thread/lfqueue.h>
#include <deque>
#include <utility>
#ifdef NO_ERROR
#undef NO_ERROR
#endif
#define BUS_WORKER_CONDVAR
//#define BUS_WORKER_MIXED
namespace NBus {
class TBusConnection;
class TBusConnectionFactory;
class TBusServerFactory;
using TBusConnectionList = TList<TBusConnection*>;
/// @throw yexception
EIpVersion MakeIpVersion(bool allowIpv4, bool allowIpv6);
inline bool WouldBlock() {
int syserr = LastSystemError();
return syserr == EAGAIN || syserr == EINPROGRESS || syserr == EWOULDBLOCK || syserr == EINTR;
}
class TBusSession;
struct TMaxConnectedException: public yexception {
TMaxConnectedException(unsigned maxConnect) {
yexception& exc = *this;
exc << TStringBuf("Exceeded maximum number of outstanding connections: ");
exc << maxConnect;
}
};
enum EPollType {
POLL_READ,
POLL_WRITE
};
}
|