revent 0.4.4 → 0.5

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.
@@ -0,0 +1 @@
1
+ package {
@@ -0,0 +1,3 @@
1
+ To permit the flash client to connect make connection to the server:
2
+ * Go to http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager04.html
3
+ * Add the folder of the client to trusted location list
File without changes
Binary file
@@ -1,3 +1,4 @@
1
+ require 'rubygems'
1
2
  require 'revent/as_r'
2
3
 
3
4
  HOST = 'localhost'
@@ -13,34 +14,26 @@ class Server
13
14
  end
14
15
 
15
16
  def on_connect(client)
16
- puts "on_connect:"
17
- puts client.remote_ip
17
+ puts "on_connect: ", client.remote_ip
18
18
  end
19
19
 
20
20
  def on_close(client)
21
- puts "on_close:"
22
- puts client.remote_ip
21
+ puts "on_close:", client.remote_ip
23
22
  end
24
23
 
25
- def on_call(client, cmd, value)
26
- puts "on_call:", cmd, value
24
+ def on_invoke(client, cmd, value)
25
+ puts "on_invoke: ", cmd, value
27
26
  if cmd == CMD_TEST_BYTE_ARRAY
28
27
  test_byte_array(client, value)
29
28
  end
30
29
  end
31
30
 
32
31
  def on_result(client, cmd, value)
33
- puts "on_result:"
34
- puts client.remote_ip
35
- puts cmd
36
- puts result
32
+ puts "on_result: ", client.remote_ip, cmd, result
37
33
  end
38
34
 
39
35
  def on_error(client, cmd, value)
40
- puts "on_error:"
41
- puts client.remote_ip
42
- puts cmd
43
- puts error
36
+ puts "on_error: ", client.remote_ip, cmd, error
44
37
  end
45
38
 
46
39
  # ----------------------------------------------------------------------------
@@ -0,0 +1,46 @@
1
+ require 'rubygems'
2
+ require 'revent/r_r'
3
+
4
+ class Client
5
+ include Revent::RRClient
6
+
7
+ def initialize
8
+ @data_prefix = ''
9
+ 50.times { |i| @data_prefix << i.to_s }
10
+
11
+ connect('localhost', 1943)
12
+ end
13
+
14
+ N = 10**4
15
+
16
+ def on_connect
17
+ @now = Time.now
18
+ @count = 0
19
+ N.times do |i|
20
+ invoke("#{@data_prefix}#{i}", i)
21
+ end
22
+ end
23
+
24
+ def on_invoke(cmd, value)
25
+ cmd =~ /#{@data_prefix}(.+)/
26
+ puts 'Error at on_invoke' if value != $1.to_i
27
+ value
28
+ end
29
+
30
+ def on_result(cmd, value)
31
+ cmd =~ /#{@data_prefix}(.+)/
32
+ puts 'Error at on_result' if value != $1.to_i
33
+
34
+ @count += 1
35
+ if @count == N
36
+ dt = Time.now - @now
37
+ puts N
38
+ puts dt
39
+ puts N/dt
40
+ end
41
+ end
42
+ end
43
+
44
+ EventMachine::run do
45
+ Client.new
46
+ end
@@ -0,0 +1,46 @@
1
+ require 'rubygems'
2
+ require 'revent/r_r'
3
+
4
+ class Server
5
+ include Revent::RRServer
6
+
7
+ def initialize
8
+ @data_prefix = ''
9
+ 50.times { |i| @data_prefix << i.to_s }
10
+
11
+ start_server('localhost', 1943)
12
+ end
13
+
14
+ N = 10**4
15
+
16
+ def on_connect(con)
17
+ @count = 0
18
+ @now = Time.now
19
+ N.times do |i|
20
+ con.invoke("#{@data_prefix}#{i}", i)
21
+ end
22
+ end
23
+
24
+ def on_invoke(con, cmd, value)
25
+ cmd =~ /#{@data_prefix}(.+)/
26
+ puts 'Error at on_invoke' if value != $1.to_i
27
+ value
28
+ end
29
+
30
+ def on_result(con, cmd, value)
31
+ cmd =~ /#{@data_prefix}(.+)/
32
+ puts 'Error at on_result' if value != $1.to_i
33
+
34
+ @count += 1
35
+ if @count == N
36
+ dt = Time.now - @now
37
+ puts N
38
+ puts dt
39
+ puts N/dt
40
+ end
41
+ end
42
+ end
43
+
44
+ EventMachine::run do
45
+ Server.new
46
+ end
@@ -5,7 +5,7 @@
5
5
  import flash.utils.ByteArray;
6
6
 
7
7
  public class Client extends EventDispatcher {
8
- private static const TYPE_CALL:int = 0;
8
+ private static const TYPE_INVOKE:int = 0;
9
9
  private static const TYPE_RESULT:int = 1;
10
10
  private static const TYPE_ERROR:int = 2;
11
11
 
@@ -15,7 +15,7 @@
15
15
  public function Client():void {
16
16
  _socket = new Socket();
17
17
  _socket.objectEncoding = ObjectEncoding.AMF3;
18
-
18
+
19
19
  _socket.addEventListener(Event.CONNECT, onConnect);
20
20
  _socket.addEventListener(Event.CLOSE, onClose);
21
21
  _socket.addEventListener(IOErrorEvent.IO_ERROR, onIOError);
@@ -37,8 +37,8 @@
37
37
  return _socket.connected;
38
38
  }
39
39
 
40
- public function call(cmd:Object, value:Object):void {
41
- _socket.writeObject([TYPE_CALL, cmd, value]);
40
+ public function invoke(cmd:Object, value:Object):void {
41
+ _socket.writeObject([TYPE_INVOKE, cmd, value]);
42
42
  _socket.flush();
43
43
  }
44
44
 
@@ -55,19 +55,19 @@
55
55
  // ---------------------------------------------------------------------------
56
56
 
57
57
  private function onConnect(event:Event):void {
58
- dispatchEvent(new CallEvent(CallEvent.CONNECT, null, null));
58
+ dispatchEvent(new InvokeEvent(InvokeEvent.CONNECT, null, null));
59
59
  }
60
60
 
61
61
  private function onClose(event:Event):void {
62
- dispatchEvent(new CallEvent(CallEvent.CLOSE, null, null));
62
+ dispatchEvent(new InvokeEvent(InvokeEvent.CLOSE, null, null));
63
63
  }
64
64
 
65
65
  private function onIOError(event:IOErrorEvent):void {
66
- dispatchEvent(new CallEvent(CallEvent.IO_ERROR, null, null));
66
+ dispatchEvent(new InvokeEvent(InvokeEvent.IO_ERROR, null, null));
67
67
  }
68
68
 
69
69
  private function onSecurityError(event:SecurityErrorEvent):void {
70
- dispatchEvent(new CallEvent(CallEvent.SECURITY_ERROR, null, null));
70
+ dispatchEvent(new InvokeEvent(InvokeEvent.SECURITY_ERROR, null, null));
71
71
  }
72
72
 
73
73
  private function onData(event:ProgressEvent):void {
@@ -86,16 +86,16 @@
86
86
  var cmd:Object = o[1];
87
87
  var value:Object = o[2];
88
88
 
89
- var e:CallEvent;
89
+ var e:InvokeEvent;
90
90
  switch (type) {
91
- case TYPE_CALL:
92
- e = new CallEvent(CallEvent.CALL, cmd, value);
91
+ case TYPE_INVOKE:
92
+ e = new InvokeEvent(InvokeEvent.INVOKE, cmd, value);
93
93
  break;
94
94
  case TYPE_RESULT:
95
- e = new CallEvent(CallEvent.RESULT, cmd, value);
95
+ e = new InvokeEvent(InvokeEvent.RESULT, cmd, value);
96
96
  break;
97
97
  case TYPE_ERROR:
98
- e = new CallEvent(CallEvent.ERROR, cmd, value);
98
+ e = new InvokeEvent(InvokeEvent.ERROR, cmd, value);
99
99
  break;
100
100
  }
101
101
  dispatchEvent(e);
@@ -110,4 +110,4 @@
110
110
  }
111
111
  }
112
112
  }
113
- }
113
+ }
@@ -1,7 +1,7 @@
1
1
  package revent {
2
2
  import flash.events.Event;
3
3
 
4
- public class CallEvent extends Event {
4
+ public class InvokeEvent extends Event {
5
5
  // The connection has opened, communication is ready.
6
6
  public static const CONNECT:String = "CONNECT";
7
7
  // The connection has closed, do not do any communication.
@@ -9,17 +9,17 @@
9
9
  public static const IO_ERROR:String = "IO_ERROR";
10
10
  public static const SECURITY_ERROR:String = "SECURITY_ERROR";
11
11
 
12
- public static const CALL:String = "CALL";
12
+ public static const INVOKE:String = "INVOKE";
13
13
  public static const RESULT:String = "RESULT";
14
14
  public static const ERROR:String = "ERROR";
15
15
 
16
16
  public var cmd:Object;
17
17
  public var value:Object;
18
18
 
19
- public function CallEvent(type:String, cmd:Object, value:Object):void {
19
+ public function InvokeEvent(type:String, cmd:Object, value:Object):void {
20
20
  this.cmd = cmd;
21
21
  this.value = value;
22
22
  super(type);
23
23
  }
24
24
  }
25
- }
25
+ }
@@ -13,13 +13,13 @@ module Revent
13
13
  # Called by Flash player
14
14
  CMD_POLICY = '<policy-file-request/>' + "\0"
15
15
 
16
- TYPE_CALL = 0
16
+ TYPE_INVOKE = 0
17
17
  TYPE_RESULT = 1
18
18
  TYPE_ERROR = 2
19
19
 
20
- attr_writer :me
20
+ attr_writer :me
21
21
  attr_accessor :session # Something that you want to associate with this connection
22
- attr_writer :cons
22
+ attr_writer :cons
23
23
 
24
24
  def post_init
25
25
  @connected = true
@@ -55,6 +55,7 @@ module Revent
55
55
  end
56
56
  rescue
57
57
  @me.logger.error($!)
58
+ @me.logger.error($!.backtrace.join("\n"))
58
59
  close_connection
59
60
  end
60
61
 
@@ -64,8 +65,8 @@ module Revent
64
65
  value = o[2]
65
66
 
66
67
  case type
67
- when TYPE_CALL
68
- @me.on_call(self, cmd, value)
68
+ when TYPE_INVOKE
69
+ @me.on_invoke(self, cmd, value)
69
70
  when TYPE_RESULT
70
71
  @me.on_result(self, cmd, value)
71
72
  when TYPE_ERROR
@@ -73,6 +74,7 @@ module Revent
73
74
  end
74
75
  rescue
75
76
  @me.logger.error($!)
77
+ @me.logger.error($!.backtrace.join("\n"))
76
78
  close_connection
77
79
  end
78
80
 
@@ -100,16 +102,17 @@ module Revent
100
102
  peername = get_peername
101
103
  return @last_ip if peername.nil?
102
104
 
103
- a = get_peername[2,6].unpack("nC4")
105
+ a = get_peername[2, 6].unpack("nC4")
104
106
  a.delete_at(0)
105
107
  @last_ip = a.join('.')
106
108
  end
107
109
 
108
- def call(cmd, value, close_connection_after_writing = false)
109
- send_amf3_data([TYPE_CALL, cmd, value])
110
+ def invoke(cmd, value, close_connection_after_writing = false)
111
+ send_amf3_data([TYPE_INVOKE, cmd, value])
110
112
  self.close_connection_after_writing if close_connection_after_writing
111
113
  rescue
112
114
  @me.logger.error($!)
115
+ @me.logger.error($!.backtrace.join("\n"))
113
116
  end
114
117
 
115
118
  def result(cmd, value, close_connection_after_writing = false)
@@ -117,6 +120,7 @@ module Revent
117
120
  self.close_connection_after_writing if close_connection_after_writing
118
121
  rescue
119
122
  @me.logger.error($!)
123
+ @me.logger.error($!.backtrace.join("\n"))
120
124
  end
121
125
 
122
126
  def error(cmd, value, close_connection_after_writing = false)
@@ -124,6 +128,7 @@ module Revent
124
128
  self.close_connection_after_writing if close_connection_after_writing
125
129
  rescue
126
130
  @me.logger.error($!)
131
+ @me.logger.error($!.backtrace.join("\n"))
127
132
  end
128
133
 
129
134
  def compress(value)
@@ -149,11 +154,11 @@ module Revent
149
154
  @logger = Logger.new(STDOUT) if @logger.nil?
150
155
  @max_cmd_length = DEFAULT_MAX_CMD_LENGTH if @max_cmd_length.nil?
151
156
  if @policy.nil?
152
- @policy = <<EOF
157
+ @policy = %Q{
153
158
  <cross-domain-policy>
154
159
  <allow-access-from domain="*" to-ports="#{port}" />
155
160
  </cross-domain-policy>
156
- EOF
161
+ }
157
162
  end
158
163
 
159
164
  @revent_cons = []
@@ -182,7 +187,7 @@ EOF
182
187
  def on_close(client)
183
188
  end
184
189
 
185
- def on_call(client, cmd, value)
190
+ def on_invoke(client, cmd, value)
186
191
  end
187
192
 
188
193
  def on_result(client, cmd, value)
@@ -32,7 +32,7 @@ module Revent
32
32
  code.upcase == code0 and Time.now.to_i - timestamp0 < @valid_period
33
33
  end
34
34
 
35
- private
35
+ private
36
36
 
37
37
  # Returns [code (a string of A-Z), img]
38
38
  VOCA = ('A'..'Z').to_a.freeze
@@ -7,13 +7,13 @@ require "#{File.dirname(__FILE__)}/synchronize"
7
7
  module Revent
8
8
  # Included by both Revent::RRServer and Revent::RRClient.
9
9
  module RRCon
10
- TYPE_CALL = 0
10
+ TYPE_INVOKE = 0
11
11
  TYPE_RESULT = 1
12
12
  TYPE_ERROR = 2
13
13
 
14
- attr_writer :me
14
+ attr_writer :me
15
15
  attr_accessor :session # Something that you want to associate with this connection
16
- attr_writer :cons # Only used for Revent::RRServer
16
+ attr_writer :cons # Only used for Revent::RRServer
17
17
 
18
18
  def post_init
19
19
  @connected = true
@@ -37,8 +37,8 @@ module Revent
37
37
  value = o[2]
38
38
 
39
39
  case type
40
- when TYPE_CALL
41
- value = @cons.nil? ? @me.on_call(cmd, value) : @me.on_call(self, cmd, value)
40
+ when TYPE_INVOKE
41
+ value = @cons.nil? ? @me.on_invoke(cmd, value) : @me.on_invoke(self, cmd, value)
42
42
  o = [TYPE_RESULT, cmd, value]
43
43
  send_data(Marshal.dump(o))
44
44
  when TYPE_RESULT
@@ -61,7 +61,7 @@ module Revent
61
61
  end
62
62
  end
63
63
 
64
- # ----------------------------------------------------------------------------
64
+ # --------------------------------------------------------------------------
65
65
 
66
66
  def connected?
67
67
  @connected
@@ -72,13 +72,13 @@ module Revent
72
72
  peername = get_peername
73
73
  return @last_ip if peername.nil?
74
74
 
75
- a = get_peername[2,6].unpack("nC4")
75
+ a = get_peername[2, 6].unpack("nC4")
76
76
  a.delete_at(0)
77
77
  @last_ip = a.join('.')
78
78
  end
79
79
 
80
- def call(cmd, value)
81
- o = [TYPE_CALL, cmd, value]
80
+ def invoke(cmd, value)
81
+ o = [TYPE_INVOKE, cmd, value]
82
82
  send_data(Marshal.dump(o))
83
83
  end
84
84
  end
@@ -112,7 +112,7 @@ module Revent
112
112
  def on_close(client)
113
113
  end
114
114
 
115
- def on_call(client, cmd, value)
115
+ def on_invoke(client, cmd, value)
116
116
  end
117
117
 
118
118
  def on_result(client, cmd, value)
@@ -150,8 +150,8 @@ module Revent
150
150
  @revent_con.remote_ip if connected?
151
151
  end
152
152
 
153
- def call(cmd, value)
154
- @revent_con.call(cmd, value) if connected?
153
+ def invoke(cmd, value)
154
+ @revent_con.invoke(cmd, value) if connected?
155
155
  end
156
156
 
157
157
  def close_connection
@@ -170,7 +170,7 @@ module Revent
170
170
  def on_close
171
171
  end
172
172
 
173
- def on_call(cmd, value)
173
+ def on_invoke(cmd, value)
174
174
  end
175
175
 
176
176
  def on_result(cmd, value)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: revent
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.4
4
+ version: "0.5"
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ngoc DAO Thanh
@@ -9,10 +9,29 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-03-28 00:00:00 +09:00
12
+ date: 2008-09-24 00:00:00 +09:00
13
13
  default_executable:
14
- dependencies: []
15
-
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: eventmachine
17
+ type: :runtime
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: "0"
24
+ version:
25
+ - !ruby/object:Gem::Dependency
26
+ name: crypt
27
+ type: :runtime
28
+ version_requirement:
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: "0"
34
+ version:
16
35
  description:
17
36
  email: ngocdaothanh@gmail.com
18
37
  executables: []
@@ -22,43 +41,44 @@ extensions: []
22
41
  extra_rdoc_files: []
23
42
 
24
43
  files:
25
- - test
26
- - test/as_r
27
- - test/as_r/Document.as
28
- - test/as_r/client.fla
29
- - test/as_r/server.rb
30
- - test/as_r/client.swf
31
- - test/r_r
32
- - test/r_r/client.rb
33
- - test/r_r/server.rb
44
+ - example
45
+ - example/as_r
46
+ - example/as_r/client.fla
47
+ - example/as_r/client.swf
48
+ - example/as_r/Document.as
49
+ - example/as_r/README
50
+ - example/as_r/server.rb
51
+ - example/r_r
52
+ - example/r_r/client.rb
53
+ - example/r_r/server.rb
54
+ - INSTALL
34
55
  - lib
35
56
  - lib/revent
36
- - lib/revent/r_r.rb
37
- - lib/revent/as_r.rb
38
- - lib/revent/Client.as
39
- - lib/revent/synchronize.rb
40
- - lib/revent/captcha.rb
41
57
  - lib/revent/amf3
58
+ - lib/revent/amf3/amf3.rb
42
59
  - lib/revent/amf3/app
43
- - lib/revent/amf3/app/fault_object.rb
44
60
  - lib/revent/amf3/app/configuration.rb
45
- - lib/revent/amf3/LICENSE
61
+ - lib/revent/amf3/app/fault_object.rb
62
+ - lib/revent/amf3/exception
63
+ - lib/revent/amf3/exception/rubyamf_exception.rb
46
64
  - lib/revent/amf3/io
47
65
  - lib/revent/amf3/io/amf_deserializer.rb
48
- - lib/revent/amf3/io/read_write.rb
49
66
  - lib/revent/amf3/io/amf_serializer.rb
50
67
  - lib/revent/amf3/io/byte_array.rb
68
+ - lib/revent/amf3/io/read_write.rb
69
+ - lib/revent/amf3/LICENSE
70
+ - lib/revent/amf3/README
51
71
  - lib/revent/amf3/util
52
- - lib/revent/amf3/util/vo_helper.rb
53
72
  - lib/revent/amf3/util/string.rb
54
- - lib/revent/amf3/README
55
- - lib/revent/amf3/exception
56
- - lib/revent/amf3/exception/rubyamf_exception.rb
57
- - lib/revent/amf3/amf3.rb
58
- - lib/revent/CallEvent.as
59
- - setup.rb
60
- - INSTALL
73
+ - lib/revent/amf3/util/vo_helper.rb
74
+ - lib/revent/as_r.rb
75
+ - lib/revent/captcha.rb
76
+ - lib/revent/Client.as
77
+ - lib/revent/InvokeEvent.as
78
+ - lib/revent/r_r.rb
79
+ - lib/revent/synchronize.rb
61
80
  - README
81
+ - setup.rb
62
82
  has_rdoc: false
63
83
  homepage: http://revent.rubyforge.org
64
84
  post_install_message:
@@ -81,7 +101,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
81
101
  requirements: []
82
102
 
83
103
  rubyforge_project: revent
84
- rubygems_version: 1.0.1
104
+ rubygems_version: 1.2.0
85
105
  signing_key:
86
106
  specification_version: 2
87
107
  summary: RPC based on EventMachine
@@ -1,81 +0,0 @@
1
- package {
2
- import flash.display.Sprite;
3
- import flash.events.MouseEvent;
4
- import flash.utils.ByteArray;
5
-
6
- import revent.Client;
7
- import revent.CallEvent;
8
-
9
- public class Document extends Sprite {
10
- private static const HOST:String = "localhost";
11
- private static const PORT:int = 1935;
12
-
13
- private static const CMD_TEST_BYTE_ARRAY:int = 0;
14
-
15
- private var _client:Client;
16
- private var _size:int;
17
-
18
- public function Document():void {
19
- _byteArrayBtn.addEventListener(MouseEvent.CLICK, onByteArrayBtnClick);
20
-
21
- _client = new Client();
22
- _client.addEventListener(CallEvent.CONNECT, onConnect);
23
- _client.addEventListener(CallEvent.CLOSE, onClose);
24
- _client.addEventListener(CallEvent.IO_ERROR, onIOError);
25
- _client.addEventListener(CallEvent.SECURITY_ERROR, onSecurityError);
26
- _client.addEventListener(CallEvent.CALL, onCall);
27
- _client.addEventListener(CallEvent.RESULT, onResult);
28
- _client.addEventListener(CallEvent.ERROR, onError);
29
- _client.connect(HOST, PORT);
30
- }
31
-
32
- // ---------------------------------------------------------------------------
33
-
34
- private function onConnect(event:CallEvent):void {
35
- _status.text += "onConnect\n";
36
- }
37
-
38
- private function onClose(event:CallEvent):void {
39
- _status.text += "onClose\n";
40
- }
41
-
42
- private function onIOError(event:CallEvent):void {
43
- _status.text += "onIOError\n";
44
- }
45
-
46
- private function onSecurityError(event:CallEvent):void {
47
- _status.text += "onSecurityError\n";
48
- }
49
-
50
- private function onCall(event:CallEvent):void {
51
- _status.text += "onCall\n";
52
- _status.text += "cmd:" + event.cmd;
53
- _status.text += "value:" + event.value;
54
- }
55
-
56
- private function onResult(event:CallEvent):void {
57
- _status.text += "onResult";
58
- _status.text += "cmd:" + event.cmd;
59
-
60
- var b:ByteArray = event.value as ByteArray;
61
- _status.text += "Received bytes: " + b.length;
62
- _size += 1024;
63
- _status.text += "Testing byte array with size: " + _size;
64
- _client.call(CMD_TEST_BYTE_ARRAY, _size);
65
- }
66
-
67
- private function onError(event:CallEvent):void {
68
- _status.text += "onError";
69
- _status.text += "cmd: " + event.cmd;
70
- _status.text += "value: " + event.value;
71
- }
72
-
73
- // ---------------------------------------------------------------------------
74
-
75
- private function onByteArrayBtnClick(event:MouseEvent):void {
76
- _size = 1024;
77
- _status.text += "Testing byte array with size: " + _size;
78
- _client.call(CMD_TEST_BYTE_ARRAY, _size);
79
- }
80
- }
81
- }
Binary file
@@ -1,34 +0,0 @@
1
- require 'revent'
2
-
3
- class Client
4
- include ReventClient
5
-
6
- def initialize
7
- connect('localhost', 1943)
8
- end
9
-
10
- N = 10**5
11
-
12
- def on_connect
13
- @now = Time.now
14
- @x = 0
15
- N.times do |i|
16
- call('hello', i)
17
- end
18
- end
19
-
20
- def on_result(cmd, arg)
21
- @x += 1
22
- #puts @x
23
- if @x == N
24
- dt = Time.now - @now
25
- puts N
26
- puts dt
27
- puts N/dt
28
- end
29
- end
30
- end
31
-
32
- EventMachine::run do
33
- Client.new
34
- end
@@ -1,33 +0,0 @@
1
- require 'revent'
2
-
3
- class Server
4
- include ReventServer
5
-
6
- def initialize
7
- start_server('localhost', 1943)
8
- end
9
-
10
- N = 10**5
11
-
12
- def on_connect(con)
13
- @x = 0
14
- @now = Time.now
15
- N.times do |i|
16
- con.call('hello', i)
17
- end
18
- end
19
-
20
- def on_result(con, cmd, arg)
21
- @x += 1
22
- if @x == N
23
- dt = Time.now - @now
24
- puts N
25
- puts dt
26
- puts N/dt
27
- end
28
- end
29
- end
30
-
31
- EventMachine::run do
32
- Server.new
33
- end