eventmachine 1.0.1-x86-mswin32-60 → 1.0.2-x86-mswin32-60
Sign up to get free protection for your applications and to get access to all the features.
- 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-mswin32-60
|
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
|
|