eventmachine 1.0.1-x86-mingw32 → 1.0.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.
- data/CHANGELOG.md +13 -1
- data/eventmachine.gemspec +4 -2
- data/ext/ed.cpp +5 -4
- data/ext/em.cpp +10 -40
- data/ext/em.h +4 -4
- data/lib/em/processes.rb +1 -1
- data/lib/em/protocols.rb +1 -0
- data/lib/em/protocols/httpclient.rb +2 -2
- data/lib/em/protocols/line_protocol.rb +2 -2
- data/lib/em/protocols/smtpserver.rb +10 -7
- data/lib/em/protocols/stomp.rb +5 -2
- data/lib/em/version.rb +1 -1
- data/lib/eventmachine.rb +6 -1
- data/lib/fastfilereaderext.rb +2 -0
- data/rakelib/package.rake +12 -7
- data/tests/test_line_protocol.rb +33 -0
- data/tests/test_stomp.rb +37 -0
- data/tests/test_system.rb +28 -0
- metadata +11 -5
data/CHANGELOG.md
CHANGED
@@ -1,7 +1,19 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## 1.0.2 (March 8, 2013)
|
4
|
+
* binary win32 gems now include fastfilereader shim [#222]
|
5
|
+
* fix long-standing connection timeout issues [27fdd5b, igrigorik/em-http-request#222]
|
6
|
+
* http and line protocol cleanups [#193, #151]
|
7
|
+
* reactor return value cleanup [#225]
|
8
|
+
* fix double require from gemspec [#284]
|
9
|
+
* fix smtp server reset behavior [#351]
|
10
|
+
* fix EM.system argument handling [#322]
|
11
|
+
* ruby 1.9 compat in smtp server and stomp protocols [#349, #315]
|
12
|
+
* fix pause from post_init [#380]
|
13
|
+
|
3
14
|
## 1.0.1 (February 27, 2013)
|
4
|
-
* use rb_wait_for_single_fd() on ruby 2.0 to fix rb_thread_select() deprecation
|
15
|
+
* use rb_wait_for_single_fd() on ruby 2.0 to fix rb_thread_select() deprecation [#363]
|
5
16
|
* fix epoll/kqueue mode in ruby 2.0 by removing calls to rb_enable_interrupt() [#248, #389]
|
6
17
|
* fix memory leak when verifying ssl cerificates [#403]
|
7
18
|
* fix initial connection delay [#393, #374]
|
19
|
+
* fix build on windows [#371]
|
data/eventmachine.gemspec
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
-
|
2
|
+
$:.unshift File.expand_path("../lib", __FILE__)
|
3
|
+
require "em/version"
|
4
|
+
|
3
5
|
|
4
6
|
Gem::Specification.new do |s|
|
5
7
|
s.name = 'eventmachine'
|
@@ -15,7 +17,7 @@ Gem::Specification.new do |s|
|
|
15
17
|
|
16
18
|
s.add_development_dependency 'rake-compiler', '~> 0.8.3'
|
17
19
|
s.add_development_dependency 'yard', ">= 0.8.5.2"
|
18
|
-
s.add_development_dependency 'bluecloth'
|
20
|
+
s.add_development_dependency 'bluecloth' unless RUBY_PLATFORM =~ /java/
|
19
21
|
|
20
22
|
s.summary = 'Ruby/EventMachine library'
|
21
23
|
s.description = "EventMachine implements a fast, single-threaded engine for arbitrary network
|
data/ext/ed.cpp
CHANGED
@@ -460,8 +460,7 @@ ConnectionDescriptor::SetConnectPending
|
|
460
460
|
void ConnectionDescriptor::SetConnectPending(bool f)
|
461
461
|
{
|
462
462
|
bConnectPending = f;
|
463
|
-
|
464
|
-
MyEventMachine->ClearHeartbeat(NextHeartbeat, this);
|
463
|
+
MyEventMachine->QueueHeartbeat(this);
|
465
464
|
_UpdateEvents();
|
466
465
|
}
|
467
466
|
|
@@ -1447,14 +1446,16 @@ void AcceptorDescriptor::Read()
|
|
1447
1446
|
(*EventCallback) (GetBinding(), EM_CONNECTION_ACCEPTED, NULL, cd->GetBinding());
|
1448
1447
|
}
|
1449
1448
|
#ifdef HAVE_EPOLL
|
1450
|
-
cd->GetEpollEvent()->events =
|
1449
|
+
cd->GetEpollEvent()->events =
|
1450
|
+
(cd->SelectForRead() ? EPOLLIN : 0) | (cd->SelectForWrite() ? EPOLLOUT : 0);
|
1451
1451
|
#endif
|
1452
1452
|
assert (MyEventMachine);
|
1453
1453
|
MyEventMachine->Add (cd);
|
1454
1454
|
#ifdef HAVE_KQUEUE
|
1455
1455
|
if (cd->SelectForWrite())
|
1456
1456
|
MyEventMachine->ArmKqueueWriter (cd);
|
1457
|
-
|
1457
|
+
if (cd->SelectForRead())
|
1458
|
+
MyEventMachine->ArmKqueueReader (cd);
|
1458
1459
|
#endif
|
1459
1460
|
}
|
1460
1461
|
|
data/ext/em.cpp
CHANGED
@@ -482,8 +482,7 @@ void EventMachine_t::Run()
|
|
482
482
|
_AddNewDescriptors();
|
483
483
|
_ModifyDescriptors();
|
484
484
|
|
485
|
-
|
486
|
-
break;
|
485
|
+
_RunOnce();
|
487
486
|
if (bTerminateSignalReceived)
|
488
487
|
break;
|
489
488
|
}
|
@@ -494,27 +493,24 @@ void EventMachine_t::Run()
|
|
494
493
|
EventMachine_t::_RunOnce
|
495
494
|
************************/
|
496
495
|
|
497
|
-
|
496
|
+
void EventMachine_t::_RunOnce()
|
498
497
|
{
|
499
|
-
bool ret;
|
500
498
|
if (bEpoll)
|
501
|
-
|
499
|
+
_RunEpollOnce();
|
502
500
|
else if (bKqueue)
|
503
|
-
|
501
|
+
_RunKqueueOnce();
|
504
502
|
else
|
505
|
-
|
503
|
+
_RunSelectOnce();
|
506
504
|
_DispatchHeartbeats();
|
507
505
|
_CleanupSockets();
|
508
|
-
return ret;
|
509
506
|
}
|
510
507
|
|
511
508
|
|
512
|
-
|
513
509
|
/*****************************
|
514
510
|
EventMachine_t::_RunEpollOnce
|
515
511
|
*****************************/
|
516
512
|
|
517
|
-
|
513
|
+
void EventMachine_t::_RunEpollOnce()
|
518
514
|
{
|
519
515
|
#ifdef HAVE_EPOLL
|
520
516
|
assert (epfd != -1);
|
@@ -539,7 +535,7 @@ bool EventMachine_t::_RunEpollOnce()
|
|
539
535
|
assert(errno != EINVAL);
|
540
536
|
assert(errno != EBADF);
|
541
537
|
}
|
542
|
-
return
|
538
|
+
return;
|
543
539
|
}
|
544
540
|
|
545
541
|
TRAP_BEG;
|
@@ -577,8 +573,6 @@ bool EventMachine_t::_RunEpollOnce()
|
|
577
573
|
timeval tv = {0, ((errno == EINTR) ? 5 : 50) * 1000};
|
578
574
|
EmSelect (0, NULL, NULL, NULL, &tv);
|
579
575
|
}
|
580
|
-
|
581
|
-
return true;
|
582
576
|
#else
|
583
577
|
throw std::runtime_error ("epoll is not implemented on this platform");
|
584
578
|
#endif
|
@@ -589,7 +583,7 @@ bool EventMachine_t::_RunEpollOnce()
|
|
589
583
|
EventMachine_t::_RunKqueueOnce
|
590
584
|
******************************/
|
591
585
|
|
592
|
-
|
586
|
+
void EventMachine_t::_RunKqueueOnce()
|
593
587
|
{
|
594
588
|
#ifdef HAVE_KQUEUE
|
595
589
|
assert (kqfd != -1);
|
@@ -618,7 +612,7 @@ bool EventMachine_t::_RunKqueueOnce()
|
|
618
612
|
assert(errno != EINVAL);
|
619
613
|
assert(errno != EBADF);
|
620
614
|
}
|
621
|
-
return
|
615
|
+
return;
|
622
616
|
}
|
623
617
|
|
624
618
|
TRAP_BEG;
|
@@ -669,8 +663,6 @@ bool EventMachine_t::_RunKqueueOnce()
|
|
669
663
|
rb_thread_schedule();
|
670
664
|
}
|
671
665
|
#endif
|
672
|
-
|
673
|
-
return true;
|
674
666
|
#else
|
675
667
|
throw std::runtime_error ("kqueue is not implemented on this platform");
|
676
668
|
#endif
|
@@ -843,37 +835,17 @@ int SelectData_t::_Select()
|
|
843
835
|
EventMachine_t::_RunSelectOnce
|
844
836
|
******************************/
|
845
837
|
|
846
|
-
|
838
|
+
void EventMachine_t::_RunSelectOnce()
|
847
839
|
{
|
848
840
|
// Crank the event machine once.
|
849
841
|
// If there are no descriptors to process, then sleep
|
850
842
|
// for a few hundred mills to avoid busy-looping.
|
851
|
-
// Return T/F to indicate whether we should continue.
|
852
843
|
// This is based on a select loop. Alternately provide epoll
|
853
844
|
// if we know we're running on a 2.6 kernel.
|
854
845
|
// epoll will be effective if we provide it as an alternative,
|
855
846
|
// however it has the same problem interoperating with Ruby
|
856
847
|
// threads that select does.
|
857
848
|
|
858
|
-
//cerr << "X";
|
859
|
-
|
860
|
-
/* This protection is now obsolete, because we will ALWAYS
|
861
|
-
* have at least one descriptor (the loop-breaker) to read.
|
862
|
-
*/
|
863
|
-
/*
|
864
|
-
if (Descriptors.size() == 0) {
|
865
|
-
#ifdef OS_UNIX
|
866
|
-
timeval tv = {0, 200 * 1000};
|
867
|
-
EmSelect (0, NULL, NULL, NULL, &tv);
|
868
|
-
return true;
|
869
|
-
#endif
|
870
|
-
#ifdef OS_WIN32
|
871
|
-
Sleep (200);
|
872
|
-
return true;
|
873
|
-
#endif
|
874
|
-
}
|
875
|
-
*/
|
876
|
-
|
877
849
|
SelectData_t SelectData;
|
878
850
|
/*
|
879
851
|
fd_set fdreads, fdwrites;
|
@@ -975,8 +947,6 @@ bool EventMachine_t::_RunSelectOnce()
|
|
975
947
|
}
|
976
948
|
}
|
977
949
|
}
|
978
|
-
|
979
|
-
return true;
|
980
950
|
}
|
981
951
|
|
982
952
|
void EventMachine_t::_CleanBadDescriptors()
|
data/ext/em.h
CHANGED
@@ -145,7 +145,7 @@ class EventMachine_t
|
|
145
145
|
uint64_t GetRealTime();
|
146
146
|
|
147
147
|
private:
|
148
|
-
|
148
|
+
void _RunOnce();
|
149
149
|
void _RunTimers();
|
150
150
|
void _UpdateTime();
|
151
151
|
void _AddNewDescriptors();
|
@@ -153,9 +153,9 @@ class EventMachine_t
|
|
153
153
|
void _InitializeLoopBreaker();
|
154
154
|
void _CleanupSockets();
|
155
155
|
|
156
|
-
|
157
|
-
|
158
|
-
|
156
|
+
void _RunSelectOnce();
|
157
|
+
void _RunEpollOnce();
|
158
|
+
void _RunKqueueOnce();
|
159
159
|
|
160
160
|
void _ModifyEpollEvent (EventableDescriptor*);
|
161
161
|
void _DispatchHeartbeats();
|
data/lib/em/processes.rb
CHANGED
@@ -114,7 +114,7 @@ module EventMachine
|
|
114
114
|
init = args.pop if args.last.is_a? Proc
|
115
115
|
|
116
116
|
# merge remaining arguments into the command
|
117
|
-
cmd =
|
117
|
+
cmd = [cmd, *args]
|
118
118
|
|
119
119
|
EM.get_subprocess_pid(EM.popen(cmd, SystemCmd, cb) do |c|
|
120
120
|
init[c] if init
|
data/lib/em/protocols.rb
CHANGED
@@ -127,7 +127,7 @@ module EventMachine
|
|
127
127
|
# Allow an override for the host header if it's not the connect-string.
|
128
128
|
host = args[:host_header] || args[:host] || "_"
|
129
129
|
# For now, ALWAYS tuck in the port string, although we may want to omit it if it's the default.
|
130
|
-
port = args[:port]
|
130
|
+
port = args[:port].to_i != 80 ? ":#{args[:port]}" : ""
|
131
131
|
|
132
132
|
# POST items.
|
133
133
|
postcontenttype = args[:contenttype] || "application/octet-stream"
|
@@ -138,7 +138,7 @@ module EventMachine
|
|
138
138
|
# TODO: We ASSUME the caller wants to send a 1.1 request. May not be a good assumption.
|
139
139
|
req = [
|
140
140
|
"#{verb} #{request}#{qs} HTTP/#{version}",
|
141
|
-
"Host: #{host}
|
141
|
+
"Host: #{host}#{port}",
|
142
142
|
"User-agent: Ruby EventMachine",
|
143
143
|
]
|
144
144
|
|
@@ -506,11 +506,13 @@ module EventMachine
|
|
506
506
|
# Since we clear the chunk array every time we submit it, the caller needs to be
|
507
507
|
# aware to do things like dup it if he wants to keep it around across calls.
|
508
508
|
#
|
509
|
-
#
|
510
|
-
#
|
511
|
-
#
|
512
|
-
#
|
513
|
-
#
|
509
|
+
# Resets the transaction upon disposition of the incoming message.
|
510
|
+
# RFC5321 says this about the MAIL FROM command:
|
511
|
+
# "This command tells the SMTP-receiver that a new mail transaction is
|
512
|
+
# starting and to reset all its state tables and buffers, including any
|
513
|
+
# recipients or mail data."
|
514
|
+
#
|
515
|
+
# Equivalent behaviour is implemented by resetting after a completed transaction.
|
514
516
|
#
|
515
517
|
# User-written code can return a Deferrable as a response from receive_message.
|
516
518
|
#
|
@@ -524,11 +526,12 @@ module EventMachine
|
|
524
526
|
|
525
527
|
succeeded = proc {
|
526
528
|
send_data "250 Message accepted\r\n"
|
529
|
+
reset_protocol_state
|
527
530
|
}
|
528
531
|
failed = proc {
|
529
532
|
send_data "550 Message rejected\r\n"
|
533
|
+
reset_protocol_state
|
530
534
|
}
|
531
|
-
|
532
535
|
d = receive_message
|
533
536
|
|
534
537
|
if d.respond_to?(:set_deferred_status)
|
@@ -541,7 +544,7 @@ module EventMachine
|
|
541
544
|
@state.delete :data
|
542
545
|
else
|
543
546
|
# slice off leading . if any
|
544
|
-
ln.slice!(0...1) if ln[0] ==
|
547
|
+
ln.slice!(0...1) if ln[0] == ?.
|
545
548
|
@databuffer << ln
|
546
549
|
if @databuffer.length > @@parms[:chunksize]
|
547
550
|
receive_data_chunk @databuffer
|
data/lib/em/protocols/stomp.rb
CHANGED
@@ -104,12 +104,15 @@ module EventMachine
|
|
104
104
|
|
105
105
|
# @private
|
106
106
|
def send_frame verb, headers={}, body=""
|
107
|
+
body = body.to_s
|
107
108
|
ary = [verb, "\n"]
|
109
|
+
body_bytesize = body.bytesize if body.respond_to? :bytesize
|
110
|
+
body_bytesize ||= body.size
|
108
111
|
headers.each {|k,v| ary << "#{k}:#{v}\n" }
|
109
|
-
ary << "content-length: #{
|
112
|
+
ary << "content-length: #{body_bytesize}\n"
|
110
113
|
ary << "content-type: text/plain; charset=UTF-8\n" unless headers.has_key? 'content-type'
|
111
114
|
ary << "\n"
|
112
|
-
ary << body
|
115
|
+
ary << body
|
113
116
|
ary << "\0"
|
114
117
|
send_data ary.join
|
115
118
|
end
|
data/lib/em/version.rb
CHANGED
data/lib/eventmachine.rb
CHANGED
@@ -1156,7 +1156,12 @@ module EventMachine
|
|
1156
1156
|
# Perhaps misnamed since the underlying function uses socketpair and is full-duplex.
|
1157
1157
|
|
1158
1158
|
klass = klass_from_handler(Connection, handler, *args)
|
1159
|
-
w =
|
1159
|
+
w = case cmd
|
1160
|
+
when Array
|
1161
|
+
cmd
|
1162
|
+
when String
|
1163
|
+
Shellwords::shellwords( cmd )
|
1164
|
+
end
|
1160
1165
|
w.unshift( w.first ) if w.first
|
1161
1166
|
s = invoke_popen( w )
|
1162
1167
|
c = klass.new s, *args
|
data/rakelib/package.rake
CHANGED
@@ -26,24 +26,29 @@ else
|
|
26
26
|
unless RUBY_PLATFORM =~ /mswin|mingw/
|
27
27
|
ext.cross_compile = true
|
28
28
|
ext.cross_platform = ['x86-mingw32', 'x86-mswin32-60']
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
29
|
+
end
|
30
|
+
end
|
31
|
+
def hack_cross_compilation(ext)
|
32
|
+
# inject 1.8/1.9 pure-ruby entry point
|
33
|
+
# HACK: add these dependencies to the task instead of using cross_compiling
|
34
|
+
ext.cross_platform.each do |platform|
|
35
|
+
Rake::Task["native:#{GEMSPEC.name}:#{platform}"].prerequisites.unshift "lib/#{ext.name}.rb"
|
34
36
|
end
|
35
37
|
end
|
36
38
|
|
37
|
-
Rake::ExtensionTask.new("rubyeventmachine", GEMSPEC) do |ext|
|
39
|
+
em = Rake::ExtensionTask.new("rubyeventmachine", GEMSPEC) do |ext|
|
38
40
|
ext.ext_dir = 'ext'
|
39
41
|
ext.source_pattern = '*.{h,c,cpp}'
|
40
42
|
setup_cross_compilation(ext)
|
41
43
|
end
|
42
|
-
|
44
|
+
hack_cross_compilation em
|
45
|
+
|
46
|
+
ff = Rake::ExtensionTask.new("fastfilereaderext", GEMSPEC) do |ext|
|
43
47
|
ext.ext_dir = 'ext/fastfilereader'
|
44
48
|
ext.source_pattern = '*.{h,c,cpp}'
|
45
49
|
setup_cross_compilation(ext)
|
46
50
|
end
|
51
|
+
hack_cross_compilation ff
|
47
52
|
end
|
48
53
|
|
49
54
|
# Setup shim files that require 1.8 vs 1.9 extensions in win32 bin gems
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'em_test_helper'
|
2
|
+
|
3
|
+
class TestLineProtocol < Test::Unit::TestCase
|
4
|
+
class LineProtocolTestClass
|
5
|
+
include EM::Protocols::LineProtocol
|
6
|
+
|
7
|
+
def lines
|
8
|
+
@lines ||= []
|
9
|
+
end
|
10
|
+
|
11
|
+
def receive_line(line)
|
12
|
+
lines << line
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def setup
|
17
|
+
@proto = LineProtocolTestClass.new
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_simple_split_line
|
21
|
+
@proto.receive_data("this is")
|
22
|
+
assert_equal([], @proto.lines)
|
23
|
+
|
24
|
+
@proto.receive_data(" a test\n")
|
25
|
+
assert_equal(["this is a test"], @proto.lines)
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_simple_lines
|
29
|
+
@proto.receive_data("aaa\nbbb\r\nccc\nddd")
|
30
|
+
assert_equal(%w(aaa bbb ccc), @proto.lines)
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
data/tests/test_stomp.rb
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'em_test_helper'
|
2
|
+
|
3
|
+
class TestStomp < Test::Unit::TestCase
|
4
|
+
CONTENT_LENGTH_REGEX = /^content-length: (\d+)$/
|
5
|
+
|
6
|
+
def bytesize(str)
|
7
|
+
str = str.to_s
|
8
|
+
size = str.bytesize if str.respond_to?(:bytesize) # bytesize added in 1.9
|
9
|
+
size || str.size
|
10
|
+
end
|
11
|
+
|
12
|
+
def test_content_length_in_bytes
|
13
|
+
connection = Object.new
|
14
|
+
connection.instance_eval do
|
15
|
+
extend EM::P::Stomp
|
16
|
+
|
17
|
+
def last_sent_content_length
|
18
|
+
@sent && Integer(@sent[CONTENT_LENGTH_REGEX, 1])
|
19
|
+
end
|
20
|
+
|
21
|
+
def send_data(string)
|
22
|
+
@sent = string
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
queue = "queue"
|
27
|
+
failure_message = "header content-length is not the byte size of last sent body"
|
28
|
+
|
29
|
+
body = "test"
|
30
|
+
connection.send queue, body
|
31
|
+
assert_equal bytesize(body), connection.last_sent_content_length, failure_message
|
32
|
+
|
33
|
+
body = "test\u221A"
|
34
|
+
connection.send queue, body
|
35
|
+
assert_equal bytesize(body), connection.last_sent_content_length, failure_message
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
require 'em_test_helper'
|
3
|
+
|
4
|
+
class TestSystem < Test::Unit::TestCase
|
5
|
+
def setup
|
6
|
+
@filename = File.expand_path("../я манал dump.txt", __FILE__)
|
7
|
+
@test_data = 'a' * 100
|
8
|
+
File.open(@filename, 'w'){|f| f.write(@test_data)}
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_system
|
12
|
+
result = nil
|
13
|
+
status = nil
|
14
|
+
EM.run {
|
15
|
+
EM.system('cat', @filename){|out, state|
|
16
|
+
result = out
|
17
|
+
status = state.exitstatus
|
18
|
+
EM.stop
|
19
|
+
}
|
20
|
+
}
|
21
|
+
assert_equal(0, status)
|
22
|
+
assert_equal(@test_data, result)
|
23
|
+
end
|
24
|
+
|
25
|
+
def teardown
|
26
|
+
File.unlink(@filename)
|
27
|
+
end
|
28
|
+
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: eventmachine
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 19
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 1.0.
|
9
|
+
- 2
|
10
|
+
version: 1.0.2
|
11
11
|
platform: x86-mingw32
|
12
12
|
authors:
|
13
13
|
- Francis Cianfrocca
|
@@ -16,7 +16,7 @@ autorequire:
|
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
18
|
|
19
|
-
date: 2013-
|
19
|
+
date: 2013-03-08 00:00:00 Z
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
22
22
|
name: rake-compiler
|
@@ -232,6 +232,7 @@ files:
|
|
232
232
|
- tests/test_idle_connection.rb
|
233
233
|
- tests/test_inactivity_timeout.rb
|
234
234
|
- tests/test_kb.rb
|
235
|
+
- tests/test_line_protocol.rb
|
235
236
|
- tests/test_ltp.rb
|
236
237
|
- tests/test_ltp2.rb
|
237
238
|
- tests/test_next_tick.rb
|
@@ -257,16 +258,21 @@ files:
|
|
257
258
|
- tests/test_ssl_args.rb
|
258
259
|
- tests/test_ssl_methods.rb
|
259
260
|
- tests/test_ssl_verify.rb
|
261
|
+
- tests/test_stomp.rb
|
262
|
+
- tests/test_system.rb
|
260
263
|
- tests/test_threaded_resource.rb
|
261
264
|
- tests/test_tick_loop.rb
|
262
265
|
- tests/test_timers.rb
|
263
266
|
- tests/test_ud.rb
|
264
267
|
- tests/test_unbind_reason.rb
|
268
|
+
- lib/fastfilereaderext.rb
|
269
|
+
- lib/rubyeventmachine.rb
|
265
270
|
- lib/1.8/rubyeventmachine.so
|
266
271
|
- lib/1.9/rubyeventmachine.so
|
272
|
+
- lib/2.0/rubyeventmachine.so
|
267
273
|
- lib/1.8/fastfilereaderext.so
|
268
274
|
- lib/1.9/fastfilereaderext.so
|
269
|
-
- lib/
|
275
|
+
- lib/2.0/fastfilereaderext.so
|
270
276
|
homepage: http://rubyeventmachine.com
|
271
277
|
licenses: []
|
272
278
|
|