eventmachine 1.0.3-x86-mingw32 → 1.2.0.dev.2-x86-mingw32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/CHANGELOG.md +84 -1
- data/README.md +6 -7
- data/ext/binder.cpp +10 -10
- data/ext/binder.h +5 -5
- data/ext/cmain.cpp +173 -61
- data/ext/ed.cpp +262 -127
- data/ext/ed.h +50 -30
- data/ext/em.cpp +491 -445
- data/ext/em.h +101 -36
- data/ext/eventmachine.h +67 -51
- data/ext/extconf.rb +124 -31
- data/ext/fastfilereader/extconf.rb +9 -2
- data/ext/fastfilereader/mapper.cpp +3 -1
- data/ext/fastfilereader/rubymain.cpp +7 -7
- data/ext/kb.cpp +1 -1
- data/ext/pipe.cpp +11 -4
- data/ext/project.h +26 -6
- data/ext/rubymain.cpp +408 -201
- data/ext/ssl.cpp +167 -20
- data/ext/ssl.h +11 -2
- data/java/src/com/rubyeventmachine/EmReactor.java +16 -0
- data/java/src/com/rubyeventmachine/EventableChannel.java +2 -0
- data/java/src/com/rubyeventmachine/EventableDatagramChannel.java +6 -0
- data/java/src/com/rubyeventmachine/EventableSocketChannel.java +55 -10
- data/lib/1.9/fastfilereaderext.so +0 -0
- data/lib/1.9/rubyeventmachine.so +0 -0
- data/lib/2.0/fastfilereaderext.so +0 -0
- data/lib/2.0/rubyeventmachine.so +0 -0
- data/lib/2.1/fastfilereaderext.so +0 -0
- data/lib/2.1/rubyeventmachine.so +0 -0
- data/lib/2.2/fastfilereaderext.so +0 -0
- data/lib/2.2/rubyeventmachine.so +0 -0
- data/lib/2.3/fastfilereaderext.so +0 -0
- data/lib/2.3/rubyeventmachine.so +0 -0
- data/lib/em/buftok.rb +34 -85
- data/lib/em/channel.rb +5 -0
- data/lib/em/completion.rb +2 -2
- data/lib/em/connection.rb +62 -4
- data/lib/em/iterator.rb +30 -48
- data/lib/em/pool.rb +1 -1
- data/lib/em/protocols/httpclient.rb +31 -11
- data/lib/em/protocols/line_and_text.rb +4 -4
- data/lib/em/protocols/linetext2.rb +44 -39
- data/lib/em/protocols/smtpclient.rb +60 -31
- data/lib/em/protocols/smtpserver.rb +32 -9
- data/lib/em/pure_ruby.rb +8 -3
- data/lib/em/queue.rb +16 -7
- data/lib/em/resolver.rb +64 -24
- data/lib/em/threaded_resource.rb +2 -2
- data/lib/em/tick_loop.rb +19 -19
- data/lib/em/version.rb +1 -1
- data/lib/eventmachine.rb +96 -49
- data/lib/jeventmachine.rb +17 -0
- data/rakelib/package.rake +31 -4
- data/tests/dhparam.pem +13 -0
- data/tests/em_test_helper.rb +87 -0
- data/tests/test_attach.rb +25 -0
- data/tests/test_basic.rb +27 -38
- data/tests/test_channel.rb +14 -1
- data/tests/test_completion.rb +1 -0
- data/tests/test_connection_count.rb +22 -1
- data/tests/test_connection_write.rb +35 -0
- data/tests/test_defer.rb +17 -0
- data/tests/test_epoll.rb +26 -14
- data/tests/test_file_watch.rb +1 -0
- data/tests/test_fork.rb +75 -0
- data/tests/test_httpclient.rb +43 -0
- data/tests/test_idle_connection.rb +6 -4
- data/tests/test_ipv4.rb +125 -0
- data/tests/test_ipv6.rb +131 -0
- data/tests/test_iterator.rb +115 -0
- data/tests/test_kb.rb +19 -25
- data/tests/test_ltp2.rb +20 -0
- data/tests/test_many_fds.rb +22 -0
- data/tests/test_pause.rb +29 -0
- data/tests/test_pool.rb +2 -0
- data/tests/test_process_watch.rb +2 -0
- data/tests/test_processes.rb +7 -7
- data/tests/test_queue.rb +14 -0
- data/tests/test_resolver.rb +56 -7
- data/tests/test_set_sock_opt.rb +2 -0
- data/tests/test_smtpclient.rb +20 -0
- data/tests/test_ssl_args.rb +2 -2
- data/tests/test_ssl_dhparam.rb +83 -0
- data/tests/test_ssl_ecdh_curve.rb +79 -0
- data/tests/test_ssl_extensions.rb +49 -0
- data/tests/test_ssl_methods.rb +22 -5
- data/tests/test_ssl_protocols.rb +246 -0
- data/tests/test_ssl_verify.rb +103 -59
- data/tests/test_system.rb +4 -0
- data/tests/test_threaded_resource.rb +8 -0
- data/tests/test_unbind_reason.rb +5 -1
- metadata +173 -107
- data/.gitignore +0 -21
- data/.travis.yml +0 -12
- data/.yardopts +0 -7
- data/Gemfile +0 -2
- data/Rakefile +0 -20
- data/eventmachine.gemspec +0 -36
- data/rakelib/cpp.rake_example +0 -77
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 199fa0af2fdede2b8d9d66fdd724c6d836043b44
|
4
|
+
data.tar.gz: ec3160e659a2f1b3903ea9be5474652832e9c6d0
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 41e15ef05fa420324f82802580a076935018159263f95c2ffd344e7b13d28ccf9461610ce64bfd1d006cce56c7408f91260fad103396f7f603f0ba52bf30c1cb
|
7
|
+
data.tar.gz: db2886956369bb59177e1bc3c2b0c2c6ee1557f61c518fce4bf0b9a018acd4751ac391f6c230a4d0a791a5d1157b7dd5a48a079b7e393704973ff6ae042636be
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,89 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
-
## 1.0.
|
3
|
+
## 1.0.9.1 (January 14, 2016)
|
4
|
+
* Fix EPROTO not defined on Windows [#676]
|
5
|
+
* Fix missing cast to struct sockaddr * [#671]
|
6
|
+
* Fix bug in OpenSSL path detection [#675]
|
7
|
+
|
8
|
+
## 1.0.9 (January 13, 2016)
|
9
|
+
* Try more ways to detect OpenSSL [#602, #643, #661, #663, #668, #669]
|
10
|
+
* Use WSAGetLastError in pipe.cpp same as ed.cpp [#659]
|
11
|
+
* Test compiler flags with the C++ compiler and add them to CXXFLAGS [#634, #651]
|
12
|
+
* Restore silent-fail on unsupported EM.epoll and EM.kqueue [#638, #649]
|
13
|
+
* getDescriptorByFileno deprecated in JRuby 1.7.x, removed in JRuby 9000 [#642, #648]
|
14
|
+
* Add -Wno-address always-true because on Windows rb_fd_select [#578]
|
15
|
+
* Remove the WITHOUT_SSL constant [#578]
|
16
|
+
* Fix SSL error when the server replies a TLS Alert to our ClientHello [#544, #653]
|
17
|
+
* Use WSAStringToAddress in lieu of inet_pton for IPv6 address detection on Windows [#595, #632]
|
18
|
+
* Fix nasty TCP/IPv6 bug [#595, #632]
|
19
|
+
* Use select_large_fdset on Solaris [#611, #625]
|
20
|
+
* Detect the Solaris Studio compiler [#611, #625]
|
21
|
+
* Throw a message with strerror included [#136, #621]
|
22
|
+
|
23
|
+
## 1.0.8 (August 6, 2015)
|
24
|
+
* fix kqueue assertion failed, postpone ArmKqueueWriter until all events are processed [#51, #176, #372, #401, #619]
|
25
|
+
* fix Rubinius GC, crank the machine from Ruby space when running Rubinius [#201, #202, #617]
|
26
|
+
* test to show that LineText2 preserves whitespace and newlines [#32, #622]
|
27
|
+
* bump up compiler warnings and resolve them [#616]
|
28
|
+
* fix Windows x64 use uintptr_t instead of unsigned long for binding pointers [#612, #615]
|
29
|
+
* fix linetext2 unroll tail recursion to avoid stack level too deep [#609]
|
30
|
+
* fix for compilation with SSL on windows [#601]
|
31
|
+
* open file descriptors and sockets with O_CLOEXEC where possible [#298, #488, #591]
|
32
|
+
* fix SmtpClient: send second EHLO after STARTTLS. [#589]
|
33
|
+
* fix nul-terminated strings in C, use StringValueCStr instead of StringValuePtr
|
34
|
+
|
35
|
+
## 1.0.7 (February 10, 2015)
|
36
|
+
* fix delay in kqueue/epoll reactor shutdown when timers exist [#587]
|
37
|
+
* fix memory leak introduced in v1.0.5 [#586]
|
38
|
+
* expose EM.set_simultaneous_accept_count [#420]
|
39
|
+
* fix busy loop when EM.run and EM.next_tick are invoked from exception handler [#452]
|
40
|
+
|
41
|
+
## 1.0.6 (February 3, 2015)
|
42
|
+
* add support for Rubinius Process::Status [#568]
|
43
|
+
* small bugfixes for SmtpServer [#449]
|
44
|
+
* update buftok.rb [#547]
|
45
|
+
* fix assertion on Write() [#525]
|
46
|
+
* work around mkmf.rb bug preventing gem installation [#574]
|
47
|
+
* add pause/resume support to jruby reactor [#556]
|
48
|
+
* fix pure ruby reactor to use 127.0.0.1 instead of localhost [#439]
|
49
|
+
* fix compilation under macruby [#243]
|
50
|
+
* add chunked encoding to http client [#111]
|
51
|
+
* fix errors on win32 when dealing with pipes [1ea45498] [#105]
|
52
|
+
|
53
|
+
## 1.0.5 (February 2, 2015)
|
54
|
+
* use monotonic clocks on Linux, OS X, Solaris, and Windows [#563]
|
55
|
+
* use the rb_fd_* API to get autosized fd_sets [#502]
|
56
|
+
* add basic tests that the DNS resolver isn't leaking timers [#571]
|
57
|
+
* update to test-unit 2.x and improve various unit tests [#551]
|
58
|
+
* remove EventMachine_t::Popen code marked by ifdef OBSOLETE [#551]
|
59
|
+
* ruby 2.0 may fail at Queue.pop, so rescue and complain to $stderr [#551]
|
60
|
+
* set file handle to INVALID_HANDLE_VALUE after closing the file [#565]
|
61
|
+
* use `defined?` instead of rescuing NameError for flow control [#535]
|
62
|
+
* fix closing files and sockets on Windows [#564]
|
63
|
+
* fix file uploads in Windows [#562]
|
64
|
+
* catch failure to fork [#539]
|
65
|
+
* use chunks for SSL write [#545]
|
66
|
+
|
67
|
+
## 1.0.4 (December 19, 2014)
|
68
|
+
* add starttls_options to smtp server [#552]
|
69
|
+
* fix closesocket on windows [#497]
|
70
|
+
* fix build on ruby 2.2 [#503]
|
71
|
+
* fix build error on ruby 1.9 [#508]
|
72
|
+
* fix timer leak during dns resolution [#489]
|
73
|
+
* add concurrency validation to EM::Iterator [#468]
|
74
|
+
* add get_file_descriptor to get fd for a signature [#467]
|
75
|
+
* add EM.attach_server and EM.attach_socket_server [#465, #466]
|
76
|
+
* calling pause from receive_data takes effect immediately [#464]
|
77
|
+
* reactor_running? returns false after fork [#455]
|
78
|
+
* fix infinite loop on double close [edc4d0e6, #441, #445]
|
79
|
+
* fix compilation issue on llvm [#433]
|
80
|
+
* fix socket error codes on win32 [ff811a81]
|
81
|
+
* fix EM.stop latency when timers exist [8b613d05, #426]
|
82
|
+
* fix infinite loop when system time changes [1427a2c80, #428]
|
83
|
+
* fix crash when callin attach/detach in the same tick [#427]
|
84
|
+
* fix compilation issue on solaris [#416]
|
85
|
+
|
86
|
+
## 1.0.3 (March 8, 2013)
|
4
87
|
* EM.system was broken in 1.0.2 release [#413]
|
5
88
|
|
6
89
|
## 1.0.2 (March 8, 2013)
|
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# About EventMachine
|
1
|
+
# About EventMachine [](https://codeclimate.com/github/eventmachine/eventmachine)
|
2
2
|
|
3
3
|
|
4
4
|
## What is EventMachine ##
|
@@ -18,7 +18,7 @@ This unique combination makes EventMachine a premier choice for designers of cri
|
|
18
18
|
applications, including Web servers and proxies, email and IM production systems, authentication/authorization
|
19
19
|
processors, and many more.
|
20
20
|
|
21
|
-
EventMachine has been around since the early 2000s and is a mature and battle
|
21
|
+
EventMachine has been around since the early 2000s and is a mature and battle-tested library.
|
22
22
|
|
23
23
|
|
24
24
|
## What EventMachine is good for? ##
|
@@ -32,7 +32,7 @@ EventMachine has been around since the early 2000s and is a mature and battle te
|
|
32
32
|
|
33
33
|
## What platforms are supported by EventMachine? ##
|
34
34
|
|
35
|
-
EventMachine supports Ruby 1.8.7
|
35
|
+
EventMachine supports Ruby >= 1.8.7 and <= 2.2 REE, JRuby and **works well on Windows** as well
|
36
36
|
as many operating systems from the Unix family (Linux, Mac OS X, BSD flavors).
|
37
37
|
|
38
38
|
|
@@ -75,7 +75,7 @@ Here's a fully-functional echo server written with EventMachine:
|
|
75
75
|
|
76
76
|
def unbind
|
77
77
|
puts "-- someone disconnected from the echo server!"
|
78
|
-
|
78
|
+
end
|
79
79
|
end
|
80
80
|
|
81
81
|
# Note that this will block current thread.
|
@@ -86,7 +86,7 @@ Here's a fully-functional echo server written with EventMachine:
|
|
86
86
|
|
87
87
|
## EventMachine documentation ##
|
88
88
|
|
89
|
-
Currently we only have [reference documentation](http://eventmachine
|
89
|
+
Currently we only have [reference documentation](http://rdoc.info/github/eventmachine/eventmachine/frames) and a [wiki](https://github.com/eventmachine/eventmachine/wiki).
|
90
90
|
|
91
91
|
|
92
92
|
## Community and where to get help ##
|
@@ -105,5 +105,4 @@ Copyright: (C) 2006-07 by Francis Cianfrocca. All Rights Reserved.
|
|
105
105
|
|
106
106
|
## Alternatives ##
|
107
107
|
|
108
|
-
If you are unhappy with EventMachine and want to use Ruby, check out [
|
109
|
-
One caveat: by May 2011, it did not support JRuby and Windows.
|
108
|
+
If you are unhappy with EventMachine and want to use Ruby, check out [Celluloid](https://celluloid.io/).
|
data/ext/binder.cpp
CHANGED
@@ -22,17 +22,17 @@ See the file COPYING for complete licensing information.
|
|
22
22
|
#define DEV_URANDOM "/dev/urandom"
|
23
23
|
|
24
24
|
|
25
|
-
map<
|
25
|
+
map<uintptr_t, Bindable_t*> Bindable_t::BindingBag;
|
26
26
|
|
27
27
|
|
28
28
|
/********************************
|
29
29
|
STATIC Bindable_t::CreateBinding
|
30
30
|
********************************/
|
31
31
|
|
32
|
-
|
32
|
+
uintptr_t Bindable_t::CreateBinding()
|
33
33
|
{
|
34
|
-
static
|
35
|
-
while(BindingBag[++num])
|
34
|
+
static uintptr_t num = 0;
|
35
|
+
while(BindingBag[++num]) {}
|
36
36
|
return num;
|
37
37
|
}
|
38
38
|
|
@@ -90,13 +90,13 @@ string Bindable_t::CreateBinding()
|
|
90
90
|
STATIC: Bindable_t::GetObject
|
91
91
|
*****************************/
|
92
92
|
|
93
|
-
Bindable_t *Bindable_t::GetObject (const
|
93
|
+
Bindable_t *Bindable_t::GetObject (const uintptr_t binding)
|
94
94
|
{
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
95
|
+
map<uintptr_t, Bindable_t*>::const_iterator i = BindingBag.find (binding);
|
96
|
+
if (i != BindingBag.end())
|
97
|
+
return i->second;
|
98
|
+
else
|
99
|
+
return NULL;
|
100
100
|
}
|
101
101
|
|
102
102
|
|
data/ext/binder.h
CHANGED
@@ -24,18 +24,18 @@ See the file COPYING for complete licensing information.
|
|
24
24
|
class Bindable_t
|
25
25
|
{
|
26
26
|
public:
|
27
|
-
static
|
28
|
-
static Bindable_t *GetObject (const
|
29
|
-
static map<
|
27
|
+
static uintptr_t CreateBinding();
|
28
|
+
static Bindable_t *GetObject (const uintptr_t);
|
29
|
+
static map<uintptr_t, Bindable_t*> BindingBag;
|
30
30
|
|
31
31
|
public:
|
32
32
|
Bindable_t();
|
33
33
|
virtual ~Bindable_t();
|
34
34
|
|
35
|
-
const
|
35
|
+
const uintptr_t GetBinding() {return Binding;}
|
36
36
|
|
37
37
|
private:
|
38
|
-
|
38
|
+
uintptr_t Binding;
|
39
39
|
};
|
40
40
|
|
41
41
|
|
data/ext/cmain.cpp
CHANGED
@@ -29,8 +29,7 @@ See the file COPYING for complete licensing information.
|
|
29
29
|
#endif
|
30
30
|
|
31
31
|
static EventMachine_t *EventMachine;
|
32
|
-
static
|
33
|
-
static int bUseKqueue = 0;
|
32
|
+
static Poller_t Poller = Poller_Default;
|
34
33
|
|
35
34
|
extern "C" void ensure_eventmachine (const char *caller = "unknown caller")
|
36
35
|
{
|
@@ -58,11 +57,8 @@ extern "C" void evma_initialize_library (EMCallback cb)
|
|
58
57
|
#else
|
59
58
|
throw std::runtime_error ("eventmachine already initialized: evma_initialize_library");
|
60
59
|
#endif
|
61
|
-
|
62
|
-
|
63
|
-
EventMachine->_UseEpoll();
|
64
|
-
if (bUseKqueue)
|
65
|
-
EventMachine->_UseKqueue();
|
60
|
+
|
61
|
+
EventMachine = new EventMachine_t (cb, Poller);
|
66
62
|
}
|
67
63
|
|
68
64
|
|
@@ -78,6 +74,17 @@ extern "C" void evma_release_library()
|
|
78
74
|
}
|
79
75
|
|
80
76
|
|
77
|
+
/*********************
|
78
|
+
evma_run_machine_once
|
79
|
+
*********************/
|
80
|
+
|
81
|
+
extern "C" bool evma_run_machine_once()
|
82
|
+
{
|
83
|
+
ensure_eventmachine("evma_run_machine_once");
|
84
|
+
return EventMachine->RunOnce();
|
85
|
+
}
|
86
|
+
|
87
|
+
|
81
88
|
/****************
|
82
89
|
evma_run_machine
|
83
90
|
****************/
|
@@ -93,7 +100,7 @@ extern "C" void evma_run_machine()
|
|
93
100
|
evma_install_oneshot_timer
|
94
101
|
**************************/
|
95
102
|
|
96
|
-
extern "C" const
|
103
|
+
extern "C" const uintptr_t evma_install_oneshot_timer (int seconds)
|
97
104
|
{
|
98
105
|
ensure_eventmachine("evma_install_oneshot_timer");
|
99
106
|
return EventMachine->InstallOneshotTimer (seconds);
|
@@ -104,7 +111,7 @@ extern "C" const unsigned long evma_install_oneshot_timer (int seconds)
|
|
104
111
|
evma_connect_to_server
|
105
112
|
**********************/
|
106
113
|
|
107
|
-
extern "C" const
|
114
|
+
extern "C" const uintptr_t evma_connect_to_server (const char *bind_addr, int bind_port, const char *server, int port)
|
108
115
|
{
|
109
116
|
ensure_eventmachine("evma_connect_to_server");
|
110
117
|
return EventMachine->ConnectToServer (bind_addr, bind_port, server, port);
|
@@ -114,7 +121,7 @@ extern "C" const unsigned long evma_connect_to_server (const char *bind_addr, in
|
|
114
121
|
evma_connect_to_unix_server
|
115
122
|
***************************/
|
116
123
|
|
117
|
-
extern "C" const
|
124
|
+
extern "C" const uintptr_t evma_connect_to_unix_server (const char *server)
|
118
125
|
{
|
119
126
|
ensure_eventmachine("evma_connect_to_unix_server");
|
120
127
|
return EventMachine->ConnectToUnixServer (server);
|
@@ -124,7 +131,7 @@ extern "C" const unsigned long evma_connect_to_unix_server (const char *server)
|
|
124
131
|
evma_attach_fd
|
125
132
|
**************/
|
126
133
|
|
127
|
-
extern "C" const
|
134
|
+
extern "C" const uintptr_t evma_attach_fd (int file_descriptor, int watch_mode)
|
128
135
|
{
|
129
136
|
ensure_eventmachine("evma_attach_fd");
|
130
137
|
return EventMachine->AttachFD (file_descriptor, watch_mode ? true : false);
|
@@ -134,7 +141,7 @@ extern "C" const unsigned long evma_attach_fd (int file_descriptor, int watch_mo
|
|
134
141
|
evma_detach_fd
|
135
142
|
**************/
|
136
143
|
|
137
|
-
extern "C" int evma_detach_fd (const
|
144
|
+
extern "C" int evma_detach_fd (const uintptr_t binding)
|
138
145
|
{
|
139
146
|
ensure_eventmachine("evma_detach_fd");
|
140
147
|
EventableDescriptor *ed = dynamic_cast <EventableDescriptor*> (Bindable_t::GetObject (binding));
|
@@ -153,7 +160,7 @@ extern "C" int evma_detach_fd (const unsigned long binding)
|
|
153
160
|
evma_get_file_descriptor
|
154
161
|
************************/
|
155
162
|
|
156
|
-
extern "C" int evma_get_file_descriptor (const
|
163
|
+
extern "C" int evma_get_file_descriptor (const uintptr_t binding)
|
157
164
|
{
|
158
165
|
ensure_eventmachine("evma_get_file_descriptor");
|
159
166
|
EventableDescriptor *ed = dynamic_cast <EventableDescriptor*> (Bindable_t::GetObject (binding));
|
@@ -172,7 +179,7 @@ extern "C" int evma_get_file_descriptor (const unsigned long binding)
|
|
172
179
|
evma_is_notify_readable
|
173
180
|
***********************/
|
174
181
|
|
175
|
-
extern "C" int evma_is_notify_readable (const
|
182
|
+
extern "C" int evma_is_notify_readable (const uintptr_t binding)
|
176
183
|
{
|
177
184
|
ConnectionDescriptor *cd = dynamic_cast <ConnectionDescriptor*> (Bindable_t::GetObject (binding));
|
178
185
|
if (cd)
|
@@ -184,7 +191,7 @@ extern "C" int evma_is_notify_readable (const unsigned long binding)
|
|
184
191
|
evma_set_notify_readable
|
185
192
|
************************/
|
186
193
|
|
187
|
-
extern "C" void evma_set_notify_readable (const
|
194
|
+
extern "C" void evma_set_notify_readable (const uintptr_t binding, int mode)
|
188
195
|
{
|
189
196
|
ConnectionDescriptor *cd = dynamic_cast <ConnectionDescriptor*> (Bindable_t::GetObject (binding));
|
190
197
|
if (cd)
|
@@ -195,7 +202,7 @@ extern "C" void evma_set_notify_readable (const unsigned long binding, int mode)
|
|
195
202
|
evma_is_notify_writable
|
196
203
|
***********************/
|
197
204
|
|
198
|
-
extern "C" int evma_is_notify_writable (const
|
205
|
+
extern "C" int evma_is_notify_writable (const uintptr_t binding)
|
199
206
|
{
|
200
207
|
ConnectionDescriptor *cd = dynamic_cast <ConnectionDescriptor*> (Bindable_t::GetObject (binding));
|
201
208
|
if (cd)
|
@@ -207,7 +214,7 @@ extern "C" int evma_is_notify_writable (const unsigned long binding)
|
|
207
214
|
evma_set_notify_writable
|
208
215
|
************************/
|
209
216
|
|
210
|
-
extern "C" void evma_set_notify_writable (const
|
217
|
+
extern "C" void evma_set_notify_writable (const uintptr_t binding, int mode)
|
211
218
|
{
|
212
219
|
ConnectionDescriptor *cd = dynamic_cast <ConnectionDescriptor*> (Bindable_t::GetObject (binding));
|
213
220
|
if (cd)
|
@@ -218,7 +225,7 @@ extern "C" void evma_set_notify_writable (const unsigned long binding, int mode)
|
|
218
225
|
evma_pause
|
219
226
|
**********/
|
220
227
|
|
221
|
-
extern "C" int evma_pause (const
|
228
|
+
extern "C" int evma_pause (const uintptr_t binding)
|
222
229
|
{
|
223
230
|
EventableDescriptor *cd = dynamic_cast <EventableDescriptor*> (Bindable_t::GetObject (binding));
|
224
231
|
if (cd)
|
@@ -231,7 +238,7 @@ extern "C" int evma_pause (const unsigned long binding)
|
|
231
238
|
evma_resume
|
232
239
|
***********/
|
233
240
|
|
234
|
-
extern "C" int evma_resume (const
|
241
|
+
extern "C" int evma_resume (const uintptr_t binding)
|
235
242
|
{
|
236
243
|
EventableDescriptor *cd = dynamic_cast <EventableDescriptor*> (Bindable_t::GetObject (binding));
|
237
244
|
if (cd)
|
@@ -244,7 +251,7 @@ extern "C" int evma_resume (const unsigned long binding)
|
|
244
251
|
evma_is_paused
|
245
252
|
**************/
|
246
253
|
|
247
|
-
extern "C" int evma_is_paused (const
|
254
|
+
extern "C" int evma_is_paused (const uintptr_t binding)
|
248
255
|
{
|
249
256
|
EventableDescriptor *cd = dynamic_cast <EventableDescriptor*> (Bindable_t::GetObject (binding));
|
250
257
|
if (cd)
|
@@ -259,6 +266,7 @@ evma_num_close_scheduled
|
|
259
266
|
|
260
267
|
extern "C" int evma_num_close_scheduled ()
|
261
268
|
{
|
269
|
+
ensure_eventmachine("evma_num_close_scheduled");
|
262
270
|
return EventMachine->NumCloseScheduled;
|
263
271
|
}
|
264
272
|
|
@@ -266,7 +274,7 @@ extern "C" int evma_num_close_scheduled ()
|
|
266
274
|
evma_create_tcp_server
|
267
275
|
**********************/
|
268
276
|
|
269
|
-
extern "C" const
|
277
|
+
extern "C" const uintptr_t evma_create_tcp_server (const char *address, int port)
|
270
278
|
{
|
271
279
|
ensure_eventmachine("evma_create_tcp_server");
|
272
280
|
return EventMachine->CreateTcpServer (address, port);
|
@@ -276,17 +284,27 @@ extern "C" const unsigned long evma_create_tcp_server (const char *address, int
|
|
276
284
|
evma_create_unix_domain_server
|
277
285
|
******************************/
|
278
286
|
|
279
|
-
extern "C" const
|
287
|
+
extern "C" const uintptr_t evma_create_unix_domain_server (const char *filename)
|
280
288
|
{
|
281
289
|
ensure_eventmachine("evma_create_unix_domain_server");
|
282
290
|
return EventMachine->CreateUnixDomainServer (filename);
|
283
291
|
}
|
284
292
|
|
293
|
+
/***********************
|
294
|
+
evma_attach_sd
|
295
|
+
************************/
|
296
|
+
|
297
|
+
extern "C" const uintptr_t evma_attach_sd (int sd)
|
298
|
+
{
|
299
|
+
ensure_eventmachine("evma_attach_sd");
|
300
|
+
return EventMachine->AttachSD (sd);
|
301
|
+
}
|
302
|
+
|
285
303
|
/*************************
|
286
304
|
evma_open_datagram_socket
|
287
305
|
*************************/
|
288
306
|
|
289
|
-
extern "C" const
|
307
|
+
extern "C" const uintptr_t evma_open_datagram_socket (const char *address, int port)
|
290
308
|
{
|
291
309
|
ensure_eventmachine("evma_open_datagram_socket");
|
292
310
|
return EventMachine->OpenDatagramSocket (address, port);
|
@@ -296,7 +314,7 @@ extern "C" const unsigned long evma_open_datagram_socket (const char *address, i
|
|
296
314
|
evma_open_keyboard
|
297
315
|
******************/
|
298
316
|
|
299
|
-
extern "C" const
|
317
|
+
extern "C" const uintptr_t evma_open_keyboard()
|
300
318
|
{
|
301
319
|
ensure_eventmachine("evma_open_keyboard");
|
302
320
|
return EventMachine->OpenKeyboard();
|
@@ -306,7 +324,7 @@ extern "C" const unsigned long evma_open_keyboard()
|
|
306
324
|
evma_watch_filename
|
307
325
|
*******************/
|
308
326
|
|
309
|
-
extern "C" const
|
327
|
+
extern "C" const uintptr_t evma_watch_filename (const char *fname)
|
310
328
|
{
|
311
329
|
ensure_eventmachine("evma_watch_filename");
|
312
330
|
return EventMachine->WatchFile(fname);
|
@@ -316,7 +334,7 @@ extern "C" const unsigned long evma_watch_filename (const char *fname)
|
|
316
334
|
evma_unwatch_filename
|
317
335
|
*********************/
|
318
336
|
|
319
|
-
extern "C" void evma_unwatch_filename (const
|
337
|
+
extern "C" void evma_unwatch_filename (const uintptr_t sig)
|
320
338
|
{
|
321
339
|
ensure_eventmachine("evma_unwatch_file");
|
322
340
|
EventMachine->UnwatchFile(sig);
|
@@ -326,7 +344,7 @@ extern "C" void evma_unwatch_filename (const unsigned long sig)
|
|
326
344
|
evma_watch_pid
|
327
345
|
**************/
|
328
346
|
|
329
|
-
extern "C" const
|
347
|
+
extern "C" const uintptr_t evma_watch_pid (int pid)
|
330
348
|
{
|
331
349
|
ensure_eventmachine("evma_watch_pid");
|
332
350
|
return EventMachine->WatchPid(pid);
|
@@ -336,7 +354,7 @@ extern "C" const unsigned long evma_watch_pid (int pid)
|
|
336
354
|
evma_unwatch_pid
|
337
355
|
****************/
|
338
356
|
|
339
|
-
extern "C" void evma_unwatch_pid (const
|
357
|
+
extern "C" void evma_unwatch_pid (const uintptr_t sig)
|
340
358
|
{
|
341
359
|
ensure_eventmachine("evma_unwatch_pid");
|
342
360
|
EventMachine->UnwatchPid(sig);
|
@@ -346,7 +364,7 @@ extern "C" void evma_unwatch_pid (const unsigned long sig)
|
|
346
364
|
evma_send_data_to_connection
|
347
365
|
****************************/
|
348
366
|
|
349
|
-
extern "C" int evma_send_data_to_connection (const
|
367
|
+
extern "C" int evma_send_data_to_connection (const uintptr_t binding, const char *data, int data_length)
|
350
368
|
{
|
351
369
|
ensure_eventmachine("evma_send_data_to_connection");
|
352
370
|
EventableDescriptor *ed = dynamic_cast <EventableDescriptor*> (Bindable_t::GetObject (binding));
|
@@ -359,7 +377,7 @@ extern "C" int evma_send_data_to_connection (const unsigned long binding, const
|
|
359
377
|
evma_send_datagram
|
360
378
|
******************/
|
361
379
|
|
362
|
-
extern "C" int evma_send_datagram (const
|
380
|
+
extern "C" int evma_send_datagram (const uintptr_t binding, const char *data, int data_length, const char *address, int port)
|
363
381
|
{
|
364
382
|
ensure_eventmachine("evma_send_datagram");
|
365
383
|
DatagramDescriptor *dd = dynamic_cast <DatagramDescriptor*> (Bindable_t::GetObject (binding));
|
@@ -373,7 +391,7 @@ extern "C" int evma_send_datagram (const unsigned long binding, const char *data
|
|
373
391
|
evma_close_connection
|
374
392
|
*********************/
|
375
393
|
|
376
|
-
extern "C" void evma_close_connection (const
|
394
|
+
extern "C" void evma_close_connection (const uintptr_t binding, int after_writing)
|
377
395
|
{
|
378
396
|
ensure_eventmachine("evma_close_connection");
|
379
397
|
EventableDescriptor *ed = dynamic_cast <EventableDescriptor*> (Bindable_t::GetObject (binding));
|
@@ -385,7 +403,7 @@ extern "C" void evma_close_connection (const unsigned long binding, int after_wr
|
|
385
403
|
evma_report_connection_error_status
|
386
404
|
***********************************/
|
387
405
|
|
388
|
-
extern "C" int evma_report_connection_error_status (const
|
406
|
+
extern "C" int evma_report_connection_error_status (const uintptr_t binding)
|
389
407
|
{
|
390
408
|
ensure_eventmachine("evma_report_connection_error_status");
|
391
409
|
EventableDescriptor *ed = dynamic_cast <EventableDescriptor*> (Bindable_t::GetObject (binding));
|
@@ -398,7 +416,7 @@ extern "C" int evma_report_connection_error_status (const unsigned long binding)
|
|
398
416
|
evma_stop_tcp_server
|
399
417
|
********************/
|
400
418
|
|
401
|
-
extern "C" void evma_stop_tcp_server (const
|
419
|
+
extern "C" void evma_stop_tcp_server (const uintptr_t binding)
|
402
420
|
{
|
403
421
|
ensure_eventmachine("evma_stop_tcp_server");
|
404
422
|
AcceptorDescriptor::StopAcceptor (binding);
|
@@ -415,12 +433,21 @@ extern "C" void evma_stop_machine()
|
|
415
433
|
EventMachine->ScheduleHalt();
|
416
434
|
}
|
417
435
|
|
436
|
+
/*****************
|
437
|
+
evma_stopping
|
438
|
+
*****************/
|
439
|
+
|
440
|
+
extern "C" bool evma_stopping()
|
441
|
+
{
|
442
|
+
ensure_eventmachine("evma_stopping");
|
443
|
+
return EventMachine->Stopping();
|
444
|
+
}
|
418
445
|
|
419
446
|
/**************
|
420
447
|
evma_start_tls
|
421
448
|
**************/
|
422
449
|
|
423
|
-
extern "C" void evma_start_tls (const
|
450
|
+
extern "C" void evma_start_tls (const uintptr_t binding)
|
424
451
|
{
|
425
452
|
ensure_eventmachine("evma_start_tls");
|
426
453
|
EventableDescriptor *ed = dynamic_cast <EventableDescriptor*> (Bindable_t::GetObject (binding));
|
@@ -432,12 +459,12 @@ extern "C" void evma_start_tls (const unsigned long binding)
|
|
432
459
|
evma_set_tls_parms
|
433
460
|
******************/
|
434
461
|
|
435
|
-
extern "C" void evma_set_tls_parms (const
|
462
|
+
extern "C" void evma_set_tls_parms (const uintptr_t binding, const char *privatekey_filename, const char *certchain_filename, int verify_peer, int fail_if_no_peer_cert, const char *sni_hostname, const char *cipherlist, const char *ecdh_curve, const char *dhparam, int ssl_version)
|
436
463
|
{
|
437
464
|
ensure_eventmachine("evma_set_tls_parms");
|
438
465
|
EventableDescriptor *ed = dynamic_cast <EventableDescriptor*> (Bindable_t::GetObject (binding));
|
439
466
|
if (ed)
|
440
|
-
ed->SetTlsParms (privatekey_filename, certchain_filename, (verify_peer == 1 ? true : false));
|
467
|
+
ed->SetTlsParms (privatekey_filename, certchain_filename, (verify_peer == 1 ? true : false), (fail_if_no_peer_cert == 1 ? true : false), sni_hostname, cipherlist, ecdh_curve, dhparam, ssl_version);
|
441
468
|
}
|
442
469
|
|
443
470
|
/******************
|
@@ -445,7 +472,7 @@ evma_get_peer_cert
|
|
445
472
|
******************/
|
446
473
|
|
447
474
|
#ifdef WITH_SSL
|
448
|
-
extern "C" X509 *evma_get_peer_cert (const
|
475
|
+
extern "C" X509 *evma_get_peer_cert (const uintptr_t binding)
|
449
476
|
{
|
450
477
|
ensure_eventmachine("evma_get_peer_cert");
|
451
478
|
EventableDescriptor *ed = dynamic_cast <EventableDescriptor*> (Bindable_t::GetObject (binding));
|
@@ -455,12 +482,72 @@ extern "C" X509 *evma_get_peer_cert (const unsigned long binding)
|
|
455
482
|
}
|
456
483
|
#endif
|
457
484
|
|
485
|
+
/******************
|
486
|
+
evma_get_cipher_bits
|
487
|
+
******************/
|
488
|
+
|
489
|
+
#ifdef WITH_SSL
|
490
|
+
extern "C" int evma_get_cipher_bits (const uintptr_t binding)
|
491
|
+
{
|
492
|
+
ensure_eventmachine("evma_get_cipher_bits");
|
493
|
+
EventableDescriptor *ed = dynamic_cast <EventableDescriptor*> (Bindable_t::GetObject (binding));
|
494
|
+
if (ed)
|
495
|
+
return ed->GetCipherBits();
|
496
|
+
return -1;
|
497
|
+
}
|
498
|
+
#endif
|
499
|
+
|
500
|
+
/******************
|
501
|
+
evma_get_cipher_name
|
502
|
+
******************/
|
503
|
+
|
504
|
+
#ifdef WITH_SSL
|
505
|
+
extern "C" const char *evma_get_cipher_name (const uintptr_t binding)
|
506
|
+
{
|
507
|
+
ensure_eventmachine("evma_get_cipher_name");
|
508
|
+
EventableDescriptor *ed = dynamic_cast <EventableDescriptor*> (Bindable_t::GetObject (binding));
|
509
|
+
if (ed)
|
510
|
+
return ed->GetCipherName();
|
511
|
+
return NULL;
|
512
|
+
}
|
513
|
+
#endif
|
514
|
+
|
515
|
+
/******************
|
516
|
+
evma_get_cipher_protocol
|
517
|
+
******************/
|
518
|
+
|
519
|
+
#ifdef WITH_SSL
|
520
|
+
extern "C" const char *evma_get_cipher_protocol (const uintptr_t binding)
|
521
|
+
{
|
522
|
+
ensure_eventmachine("evma_get_cipher_protocol");
|
523
|
+
EventableDescriptor *ed = dynamic_cast <EventableDescriptor*> (Bindable_t::GetObject (binding));
|
524
|
+
if (ed)
|
525
|
+
return ed->GetCipherProtocol();
|
526
|
+
return NULL;
|
527
|
+
}
|
528
|
+
#endif
|
529
|
+
|
530
|
+
/******************
|
531
|
+
evma_get_sni_hostname
|
532
|
+
******************/
|
533
|
+
|
534
|
+
#ifdef WITH_SSL
|
535
|
+
extern "C" const char *evma_get_sni_hostname (const uintptr_t binding)
|
536
|
+
{
|
537
|
+
ensure_eventmachine("evma_get_sni_hostname");
|
538
|
+
EventableDescriptor *ed = dynamic_cast <EventableDescriptor*> (Bindable_t::GetObject (binding));
|
539
|
+
if (ed)
|
540
|
+
return ed->GetSNIHostname();
|
541
|
+
return NULL;
|
542
|
+
}
|
543
|
+
#endif
|
544
|
+
|
458
545
|
/********************
|
459
546
|
evma_accept_ssl_peer
|
460
547
|
********************/
|
461
548
|
|
462
549
|
#ifdef WITH_SSL
|
463
|
-
extern "C" void evma_accept_ssl_peer (const
|
550
|
+
extern "C" void evma_accept_ssl_peer (const uintptr_t binding)
|
464
551
|
{
|
465
552
|
ensure_eventmachine("evma_accept_ssl_peer");
|
466
553
|
ConnectionDescriptor *cd = dynamic_cast <ConnectionDescriptor*> (Bindable_t::GetObject (binding));
|
@@ -473,7 +560,7 @@ extern "C" void evma_accept_ssl_peer (const unsigned long binding)
|
|
473
560
|
evma_get_peername
|
474
561
|
*****************/
|
475
562
|
|
476
|
-
extern "C" int evma_get_peername (const
|
563
|
+
extern "C" int evma_get_peername (const uintptr_t binding, struct sockaddr *sa, socklen_t *len)
|
477
564
|
{
|
478
565
|
ensure_eventmachine("evma_get_peername");
|
479
566
|
EventableDescriptor *ed = dynamic_cast <EventableDescriptor*> (Bindable_t::GetObject (binding));
|
@@ -488,7 +575,7 @@ extern "C" int evma_get_peername (const unsigned long binding, struct sockaddr *
|
|
488
575
|
evma_get_sockname
|
489
576
|
*****************/
|
490
577
|
|
491
|
-
extern "C" int evma_get_sockname (const
|
578
|
+
extern "C" int evma_get_sockname (const uintptr_t binding, struct sockaddr *sa, socklen_t *len)
|
492
579
|
{
|
493
580
|
ensure_eventmachine("evma_get_sockname");
|
494
581
|
EventableDescriptor *ed = dynamic_cast <EventableDescriptor*> (Bindable_t::GetObject (binding));
|
@@ -503,10 +590,10 @@ extern "C" int evma_get_sockname (const unsigned long binding, struct sockaddr *
|
|
503
590
|
evma_get_subprocess_pid
|
504
591
|
***********************/
|
505
592
|
|
506
|
-
|
593
|
+
#ifdef OS_UNIX
|
594
|
+
extern "C" int evma_get_subprocess_pid (const uintptr_t binding, pid_t *pid)
|
507
595
|
{
|
508
596
|
ensure_eventmachine("evma_get_subprocess_pid");
|
509
|
-
#ifdef OS_UNIX
|
510
597
|
PipeDescriptor *pd = dynamic_cast <PipeDescriptor*> (Bindable_t::GetObject (binding));
|
511
598
|
if (pd) {
|
512
599
|
return pd->GetSubprocessPid (pid) ? 1 : 0;
|
@@ -517,16 +604,19 @@ extern "C" int evma_get_subprocess_pid (const unsigned long binding, pid_t *pid)
|
|
517
604
|
}
|
518
605
|
else
|
519
606
|
return 0;
|
520
|
-
|
607
|
+
}
|
608
|
+
#else
|
609
|
+
extern "C" int evma_get_subprocess_pid (const uintptr_t binding UNUSED, pid_t *pid UNUSED)
|
610
|
+
{
|
521
611
|
return 0;
|
522
|
-
#endif
|
523
612
|
}
|
613
|
+
#endif
|
524
614
|
|
525
615
|
/**************************
|
526
616
|
evma_get_subprocess_status
|
527
617
|
**************************/
|
528
618
|
|
529
|
-
extern "C" int evma_get_subprocess_status (const
|
619
|
+
extern "C" int evma_get_subprocess_status (const uintptr_t binding UNUSED, int *status)
|
530
620
|
{
|
531
621
|
ensure_eventmachine("evma_get_subprocess_status");
|
532
622
|
if (status) {
|
@@ -563,7 +653,7 @@ extern "C" void evma_signal_loopbreak()
|
|
563
653
|
evma_get_comm_inactivity_timeout
|
564
654
|
********************************/
|
565
655
|
|
566
|
-
extern "C" float evma_get_comm_inactivity_timeout (const
|
656
|
+
extern "C" float evma_get_comm_inactivity_timeout (const uintptr_t binding)
|
567
657
|
{
|
568
658
|
ensure_eventmachine("evma_get_comm_inactivity_timeout");
|
569
659
|
EventableDescriptor *ed = dynamic_cast <EventableDescriptor*> (Bindable_t::GetObject (binding));
|
@@ -578,7 +668,7 @@ extern "C" float evma_get_comm_inactivity_timeout (const unsigned long binding)
|
|
578
668
|
evma_set_comm_inactivity_timeout
|
579
669
|
********************************/
|
580
670
|
|
581
|
-
extern "C" int evma_set_comm_inactivity_timeout (const
|
671
|
+
extern "C" int evma_set_comm_inactivity_timeout (const uintptr_t binding, float value)
|
582
672
|
{
|
583
673
|
ensure_eventmachine("evma_set_comm_inactivity_timeout");
|
584
674
|
EventableDescriptor *ed = dynamic_cast <EventableDescriptor*> (Bindable_t::GetObject (binding));
|
@@ -594,7 +684,7 @@ extern "C" int evma_set_comm_inactivity_timeout (const unsigned long binding, fl
|
|
594
684
|
evma_get_pending_connect_timeout
|
595
685
|
********************************/
|
596
686
|
|
597
|
-
extern "C" float evma_get_pending_connect_timeout (const
|
687
|
+
extern "C" float evma_get_pending_connect_timeout (const uintptr_t binding)
|
598
688
|
{
|
599
689
|
ensure_eventmachine("evma_get_pending_connect_timeout");
|
600
690
|
EventableDescriptor *ed = dynamic_cast <EventableDescriptor*> (Bindable_t::GetObject (binding));
|
@@ -610,7 +700,7 @@ extern "C" float evma_get_pending_connect_timeout (const unsigned long binding)
|
|
610
700
|
evma_set_pending_connect_timeout
|
611
701
|
********************************/
|
612
702
|
|
613
|
-
extern "C" int evma_set_pending_connect_timeout (const
|
703
|
+
extern "C" int evma_set_pending_connect_timeout (const uintptr_t binding, float value)
|
614
704
|
{
|
615
705
|
ensure_eventmachine("evma_set_pending_connect_timeout");
|
616
706
|
EventableDescriptor *ed = dynamic_cast <EventableDescriptor*> (Bindable_t::GetObject (binding));
|
@@ -642,7 +732,6 @@ extern "C" int evma_get_max_timer_count()
|
|
642
732
|
return EventMachine_t::GetMaxTimerCount();
|
643
733
|
}
|
644
734
|
|
645
|
-
|
646
735
|
/************************
|
647
736
|
evma_set_max_timer_count
|
648
737
|
************************/
|
@@ -660,6 +749,21 @@ extern "C" void evma_set_max_timer_count (int ct)
|
|
660
749
|
EventMachine_t::SetMaxTimerCount (ct);
|
661
750
|
}
|
662
751
|
|
752
|
+
/******************
|
753
|
+
evma_get/set_simultaneous_accept_count
|
754
|
+
******************/
|
755
|
+
|
756
|
+
extern "C" void evma_set_simultaneous_accept_count (int count)
|
757
|
+
{
|
758
|
+
EventMachine_t::SetSimultaneousAcceptCount(count);
|
759
|
+
}
|
760
|
+
|
761
|
+
extern "C" int evma_get_simultaneous_accept_count()
|
762
|
+
{
|
763
|
+
return EventMachine_t::GetSimultaneousAcceptCount();
|
764
|
+
}
|
765
|
+
|
766
|
+
|
663
767
|
/******************
|
664
768
|
evma_setuid_string
|
665
769
|
******************/
|
@@ -675,7 +779,7 @@ extern "C" void evma_setuid_string (const char *username)
|
|
675
779
|
evma_popen
|
676
780
|
**********/
|
677
781
|
|
678
|
-
extern "C" const
|
782
|
+
extern "C" const uintptr_t evma_popen (char * const*cmd_strings)
|
679
783
|
{
|
680
784
|
ensure_eventmachine("evma_popen");
|
681
785
|
return EventMachine->Socketpair (cmd_strings);
|
@@ -686,7 +790,7 @@ extern "C" const unsigned long evma_popen (char * const*cmd_strings)
|
|
686
790
|
evma_get_outbound_data_size
|
687
791
|
***************************/
|
688
792
|
|
689
|
-
extern "C" int evma_get_outbound_data_size (const
|
793
|
+
extern "C" int evma_get_outbound_data_size (const uintptr_t binding)
|
690
794
|
{
|
691
795
|
ensure_eventmachine("evma_get_outbound_data_size");
|
692
796
|
EventableDescriptor *ed = dynamic_cast <EventableDescriptor*> (Bindable_t::GetObject (binding));
|
@@ -700,7 +804,10 @@ evma_set_epoll
|
|
700
804
|
|
701
805
|
extern "C" void evma_set_epoll (int use)
|
702
806
|
{
|
703
|
-
|
807
|
+
if (use)
|
808
|
+
Poller = Poller_Epoll;
|
809
|
+
else
|
810
|
+
Poller = Poller_Default;
|
704
811
|
}
|
705
812
|
|
706
813
|
/***************
|
@@ -709,7 +816,10 @@ evma_set_kqueue
|
|
709
816
|
|
710
817
|
extern "C" void evma_set_kqueue (int use)
|
711
818
|
{
|
712
|
-
|
819
|
+
if (use)
|
820
|
+
Poller = Poller_Kqueue;
|
821
|
+
else
|
822
|
+
Poller = Poller_Default;
|
713
823
|
}
|
714
824
|
|
715
825
|
|
@@ -727,7 +837,7 @@ extern "C" int evma_set_rlimit_nofile (int nofiles)
|
|
727
837
|
evma_send_file_data_to_connection
|
728
838
|
*********************************/
|
729
839
|
|
730
|
-
extern "C" int evma_send_file_data_to_connection (const
|
840
|
+
extern "C" int evma_send_file_data_to_connection (const uintptr_t binding, const char *filename)
|
731
841
|
{
|
732
842
|
/* This is a sugaring over send_data_to_connection that reads a file into a
|
733
843
|
* locally-allocated buffer, and sends the file data to the remote peer.
|
@@ -751,8 +861,11 @@ extern "C" int evma_send_file_data_to_connection (const unsigned long binding, c
|
|
751
861
|
|
752
862
|
ensure_eventmachine("evma_send_file_data_to_connection");
|
753
863
|
|
864
|
+
#if defined(OS_WIN32)
|
865
|
+
int Fd = open (filename, O_RDONLY|O_BINARY);
|
866
|
+
#else
|
754
867
|
int Fd = open (filename, O_RDONLY);
|
755
|
-
|
868
|
+
#endif
|
756
869
|
if (Fd < 0)
|
757
870
|
return errno;
|
758
871
|
// From here on, all early returns MUST close Fd.
|
@@ -774,7 +887,6 @@ extern "C" int evma_send_file_data_to_connection (const unsigned long binding, c
|
|
774
887
|
return -1;
|
775
888
|
}
|
776
889
|
|
777
|
-
|
778
890
|
r = read (Fd, data, filesize);
|
779
891
|
if (r != filesize) {
|
780
892
|
int e = errno;
|
@@ -792,7 +904,7 @@ extern "C" int evma_send_file_data_to_connection (const unsigned long binding, c
|
|
792
904
|
evma_start_proxy
|
793
905
|
*****************/
|
794
906
|
|
795
|
-
extern "C" void evma_start_proxy (const
|
907
|
+
extern "C" void evma_start_proxy (const uintptr_t from, const uintptr_t to, const unsigned long bufsize, const unsigned long length)
|
796
908
|
{
|
797
909
|
ensure_eventmachine("evma_start_proxy");
|
798
910
|
EventableDescriptor *ed = dynamic_cast <EventableDescriptor*> (Bindable_t::GetObject (from));
|
@@ -805,7 +917,7 @@ extern "C" void evma_start_proxy (const unsigned long from, const unsigned long
|
|
805
917
|
evma_stop_proxy
|
806
918
|
****************/
|
807
919
|
|
808
|
-
extern "C" void evma_stop_proxy (const
|
920
|
+
extern "C" void evma_stop_proxy (const uintptr_t from)
|
809
921
|
{
|
810
922
|
ensure_eventmachine("evma_stop_proxy");
|
811
923
|
EventableDescriptor *ed = dynamic_cast <EventableDescriptor*> (Bindable_t::GetObject (from));
|
@@ -817,7 +929,7 @@ extern "C" void evma_stop_proxy (const unsigned long from)
|
|
817
929
|
evma_proxied_bytes
|
818
930
|
*******************/
|
819
931
|
|
820
|
-
extern "C" unsigned long evma_proxied_bytes (const
|
932
|
+
extern "C" unsigned long evma_proxied_bytes (const uintptr_t from)
|
821
933
|
{
|
822
934
|
ensure_eventmachine("evma_proxied_bytes");
|
823
935
|
EventableDescriptor *ed = dynamic_cast <EventableDescriptor*> (Bindable_t::GetObject (from));
|
@@ -832,7 +944,7 @@ extern "C" unsigned long evma_proxied_bytes (const unsigned long from)
|
|
832
944
|
evma_get_last_activity_time
|
833
945
|
****************************/
|
834
946
|
|
835
|
-
extern "C" uint64_t evma_get_last_activity_time(const
|
947
|
+
extern "C" uint64_t evma_get_last_activity_time(const uintptr_t from)
|
836
948
|
{
|
837
949
|
ensure_eventmachine("evma_get_last_activity_time");
|
838
950
|
EventableDescriptor *ed = dynamic_cast <EventableDescriptor*> (Bindable_t::GetObject (from));
|