eventmachine 1.2.2-x86-mingw32 → 1.2.3-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 +4 -4
- data/CHANGELOG.md +6 -1
- data/ext/binder.cpp +1 -1
- data/ext/binder.h +7 -1
- data/ext/ed.cpp +1 -1
- data/ext/ed.h +2 -2
- data/ext/em.cpp +15 -6
- data/ext/em.h +1 -0
- data/ext/pipe.cpp +1 -1
- data/lib/1.9/rubyeventmachine.so +0 -0
- data/lib/2.0/rubyeventmachine.so +0 -0
- data/lib/2.1/rubyeventmachine.so +0 -0
- data/lib/2.2/rubyeventmachine.so +0 -0
- data/lib/2.3/rubyeventmachine.so +0 -0
- data/lib/em/pure_ruby.rb +19 -0
- data/lib/em/version.rb +1 -1
- data/tests/test_exc.rb +15 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c50b47baa04781c3d3bf5e07cbd4f234853b7a9d
|
4
|
+
data.tar.gz: beb5882da20f780d625ae66bc94844fd1eef3481
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a43682017b880b27867b62e8f399d675c92a8f9aadaeed86af9cc669123e764743e73e957d053b255cb1f86aa6d4903fc3246ede5baa96adc8e0374e7a146044
|
7
|
+
data.tar.gz: 7202b1636a64fba08ea0ceb0f60fb4032c267040833d7fc6c62afd479febb83c2e9614f399c13a94b7818cdf0b07379b6f01028a5e30dc850515ee25baa57c2c
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,11 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
-
## 1.2.
|
3
|
+
## 1.2.3 (February 22, 2017)
|
4
|
+
* Pure Ruby: Add get_sockname [#308, #772]
|
5
|
+
* Fix segfault when an Exception is raised from unbind callback [#765, #766]
|
6
|
+
* Allow destructors to throw when compiling in >= C++11 [#767]
|
7
|
+
|
8
|
+
## 1.2.2 (January 23, 2017)
|
4
9
|
* Java: Fix Fixnum deprecated warning in Ruby 2.4+ [#759]
|
5
10
|
* Fix uncaught C++ exception in file watcher and raise InvalidSignature [#512, #757]
|
6
11
|
* Fix connection count off-by-one for epoll and kqueue [#750]
|
data/ext/binder.cpp
CHANGED
data/ext/binder.h
CHANGED
@@ -21,6 +21,12 @@ See the file COPYING for complete licensing information.
|
|
21
21
|
#define __ObjectBindings__H_
|
22
22
|
|
23
23
|
|
24
|
+
#if __cplusplus >= 201103L
|
25
|
+
#define NO_EXCEPT_FALSE noexcept(false)
|
26
|
+
#else
|
27
|
+
#define NO_EXCEPT_FALSE
|
28
|
+
#endif
|
29
|
+
|
24
30
|
class Bindable_t
|
25
31
|
{
|
26
32
|
public:
|
@@ -30,7 +36,7 @@ class Bindable_t
|
|
30
36
|
|
31
37
|
public:
|
32
38
|
Bindable_t();
|
33
|
-
virtual ~Bindable_t();
|
39
|
+
virtual ~Bindable_t() NO_EXCEPT_FALSE;
|
34
40
|
|
35
41
|
const uintptr_t GetBinding() {return Binding;}
|
36
42
|
|
data/ext/ed.cpp
CHANGED
@@ -126,7 +126,7 @@ EventableDescriptor::EventableDescriptor (SOCKET sd, EventMachine_t *em):
|
|
126
126
|
EventableDescriptor::~EventableDescriptor
|
127
127
|
*****************************************/
|
128
128
|
|
129
|
-
EventableDescriptor::~EventableDescriptor()
|
129
|
+
EventableDescriptor::~EventableDescriptor() NO_EXCEPT_FALSE
|
130
130
|
{
|
131
131
|
if (NextHeartbeat)
|
132
132
|
MyEventMachine->ClearHeartbeat(NextHeartbeat, this);
|
data/ext/ed.h
CHANGED
@@ -37,7 +37,7 @@ class EventableDescriptor: public Bindable_t
|
|
37
37
|
{
|
38
38
|
public:
|
39
39
|
EventableDescriptor (SOCKET, EventMachine_t*);
|
40
|
-
virtual ~EventableDescriptor();
|
40
|
+
virtual ~EventableDescriptor() NO_EXCEPT_FALSE;
|
41
41
|
|
42
42
|
SOCKET GetSocket() {return MySocket;}
|
43
43
|
void SetSocketInvalid() { MySocket = INVALID_SOCKET; }
|
@@ -365,7 +365,7 @@ class PipeDescriptor: public EventableDescriptor
|
|
365
365
|
{
|
366
366
|
public:
|
367
367
|
PipeDescriptor (SOCKET, pid_t, EventMachine_t*);
|
368
|
-
virtual ~PipeDescriptor();
|
368
|
+
virtual ~PipeDescriptor() NO_EXCEPT_FALSE;
|
369
369
|
|
370
370
|
virtual void Read();
|
371
371
|
virtual void Write();
|
data/ext/em.cpp
CHANGED
@@ -164,6 +164,8 @@ EventMachine_t::~EventMachine_t()
|
|
164
164
|
{
|
165
165
|
// Run down descriptors
|
166
166
|
size_t i;
|
167
|
+
for (i = 0; i < DescriptorsToDelete.size(); i++)
|
168
|
+
delete DescriptorsToDelete[i];
|
167
169
|
for (i = 0; i < NewDescriptors.size(); i++)
|
168
170
|
delete NewDescriptors[i];
|
169
171
|
for (i = 0; i < Descriptors.size(); i++)
|
@@ -840,6 +842,17 @@ void EventMachine_t::_CleanupSockets()
|
|
840
842
|
EventableDescriptor *ed = Descriptors[i];
|
841
843
|
assert (ed);
|
842
844
|
if (ed->ShouldDelete()) {
|
845
|
+
DescriptorsToDelete.push_back(ed);
|
846
|
+
}
|
847
|
+
else
|
848
|
+
Descriptors [j++] = ed;
|
849
|
+
}
|
850
|
+
while ((size_t)j < Descriptors.size())
|
851
|
+
Descriptors.pop_back();
|
852
|
+
|
853
|
+
nSockets = DescriptorsToDelete.size();
|
854
|
+
for (i=0; i < nSockets; i++) {
|
855
|
+
EventableDescriptor *ed = DescriptorsToDelete[i];
|
843
856
|
#ifdef HAVE_EPOLL
|
844
857
|
if (Poller == Poller_Epoll) {
|
845
858
|
assert (epfd != -1);
|
@@ -855,13 +868,9 @@ void EventMachine_t::_CleanupSockets()
|
|
855
868
|
ModifiedDescriptors.erase(ed);
|
856
869
|
}
|
857
870
|
#endif
|
858
|
-
|
859
|
-
}
|
860
|
-
else
|
861
|
-
Descriptors [j++] = ed;
|
871
|
+
delete ed;
|
862
872
|
}
|
863
|
-
|
864
|
-
Descriptors.pop_back();
|
873
|
+
DescriptorsToDelete.clear();
|
865
874
|
}
|
866
875
|
|
867
876
|
/*********************************
|
data/ext/em.h
CHANGED
@@ -242,6 +242,7 @@ class EventMachine_t
|
|
242
242
|
map<int, Bindable_t*> Pids;
|
243
243
|
vector<EventableDescriptor*> Descriptors;
|
244
244
|
vector<EventableDescriptor*> NewDescriptors;
|
245
|
+
vector<EventableDescriptor*> DescriptorsToDelete;
|
245
246
|
set<EventableDescriptor*> ModifiedDescriptors;
|
246
247
|
|
247
248
|
SOCKET LoopBreakerReader;
|
data/ext/pipe.cpp
CHANGED
@@ -46,7 +46,7 @@ PipeDescriptor::PipeDescriptor (int fd, pid_t subpid, EventMachine_t *parent_em)
|
|
46
46
|
PipeDescriptor::~PipeDescriptor
|
47
47
|
*******************************/
|
48
48
|
|
49
|
-
PipeDescriptor::~PipeDescriptor()
|
49
|
+
PipeDescriptor::~PipeDescriptor() NO_EXCEPT_FALSE
|
50
50
|
{
|
51
51
|
// Run down any stranded outbound data.
|
52
52
|
for (size_t i=0; i < OutboundPages.size(); i++)
|
data/lib/1.9/rubyeventmachine.so
CHANGED
Binary file
|
data/lib/2.0/rubyeventmachine.so
CHANGED
Binary file
|
data/lib/2.1/rubyeventmachine.so
CHANGED
Binary file
|
data/lib/2.2/rubyeventmachine.so
CHANGED
Binary file
|
data/lib/2.3/rubyeventmachine.so
CHANGED
Binary file
|
data/lib/em/pure_ruby.rb
CHANGED
@@ -214,6 +214,12 @@ module EventMachine
|
|
214
214
|
selectable.get_peername
|
215
215
|
end
|
216
216
|
|
217
|
+
# @private
|
218
|
+
def get_sockname sig
|
219
|
+
selectable = Reactor.instance.get_selectable( sig ) or raise "unknown get_sockname target"
|
220
|
+
selectable.get_sockname
|
221
|
+
end
|
222
|
+
|
217
223
|
# @private
|
218
224
|
def open_udp_socket host, port
|
219
225
|
EvmaUDPSocket.create(host, port).uuid
|
@@ -657,6 +663,7 @@ class IO
|
|
657
663
|
def_delegator :@my_selectable, :send_data
|
658
664
|
def_delegator :@my_selectable, :schedule_close
|
659
665
|
def_delegator :@my_selectable, :get_peername
|
666
|
+
def_delegator :@my_selectable, :get_sockname
|
660
667
|
def_delegator :@my_selectable, :send_datagram
|
661
668
|
def_delegator :@my_selectable, :get_outbound_data_size
|
662
669
|
def_delegator :@my_selectable, :set_inactivity_timeout
|
@@ -716,6 +723,10 @@ module EventMachine
|
|
716
723
|
nil
|
717
724
|
end
|
718
725
|
|
726
|
+
def get_sockname
|
727
|
+
nil
|
728
|
+
end
|
729
|
+
|
719
730
|
def set_inactivity_timeout tm
|
720
731
|
@inactivity_timeout = tm
|
721
732
|
end
|
@@ -847,6 +858,14 @@ module EventMachine
|
|
847
858
|
io.getpeername
|
848
859
|
end
|
849
860
|
|
861
|
+
# #get_sockname
|
862
|
+
# This is defined in the normal way on connected stream objects.
|
863
|
+
# Return an object that is suitable for passing to Socket#unpack_sockaddr_in or variants.
|
864
|
+
# We could also use a convenience method that did the unpacking automatically.
|
865
|
+
def get_sockname
|
866
|
+
io.getsockname
|
867
|
+
end
|
868
|
+
|
850
869
|
# #get_outbound_data_size
|
851
870
|
def get_outbound_data_size
|
852
871
|
@outbound_q.inject(0) {|memo,obj| memo += (obj || "").length}
|
data/lib/em/version.rb
CHANGED
data/tests/test_exc.rb
CHANGED
@@ -1,6 +1,13 @@
|
|
1
1
|
require 'em_test_helper'
|
2
2
|
|
3
3
|
class TestSomeExceptions < Test::Unit::TestCase
|
4
|
+
class DoomedConnectionError < StandardError
|
5
|
+
end
|
6
|
+
class DoomedConnection < EventMachine::Connection
|
7
|
+
def unbind
|
8
|
+
raise DoomedConnectionError
|
9
|
+
end
|
10
|
+
end
|
4
11
|
|
5
12
|
# Read the commentary in EM#run.
|
6
13
|
# This test exercises the ensure block in #run that makes sure
|
@@ -25,4 +32,12 @@ class TestSomeExceptions < Test::Unit::TestCase
|
|
25
32
|
}
|
26
33
|
end
|
27
34
|
|
35
|
+
def test_exception_on_unbind
|
36
|
+
assert_raises(DoomedConnectionError) {
|
37
|
+
EM.run {
|
38
|
+
EM.connect("localhost", 8888, DoomedConnection)
|
39
|
+
}
|
40
|
+
}
|
41
|
+
end
|
42
|
+
|
28
43
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: eventmachine
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.3
|
5
5
|
platform: x86-mingw32
|
6
6
|
authors:
|
7
7
|
- Francis Cianfrocca
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2017-
|
12
|
+
date: 2017-02-23 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: test-unit
|