noderb 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (51) hide show
  1. data/README.md +157 -7
  2. data/ext/noderb_extension/extconf.rb +1 -3
  3. data/ext/noderb_extension/libuv/BSDmakefile +2 -0
  4. data/ext/noderb_extension/libuv/all.gyp +326 -0
  5. data/ext/noderb_extension/libuv/config-mingw.mk +0 -1
  6. data/ext/noderb_extension/libuv/config-unix.mk +7 -1
  7. data/ext/noderb_extension/libuv/create-msvs-files.bat +13 -6
  8. data/ext/noderb_extension/libuv/{build/gyp_uv → gyp_uv} +1 -2
  9. data/ext/noderb_extension/libuv/include/uv.h +5 -0
  10. data/ext/noderb_extension/libuv/src/eio/config_cygwin.h +3 -0
  11. data/ext/noderb_extension/libuv/src/eio/config_freebsd.h +3 -0
  12. data/ext/noderb_extension/libuv/src/eio/config_sunos.h +3 -0
  13. data/ext/noderb_extension/libuv/src/eio/ecb.h +1 -1
  14. data/ext/noderb_extension/libuv/src/eio/eio.c +8 -1
  15. data/ext/noderb_extension/libuv/src/uv-common.c +1 -0
  16. data/ext/noderb_extension/libuv/src/uv-sunos.c +1 -1
  17. data/ext/noderb_extension/libuv/src/uv-unix.c +72 -59
  18. data/ext/noderb_extension/libuv/src/win/core.c +3 -0
  19. data/ext/noderb_extension/libuv/src/win/internal.h +11 -0
  20. data/ext/noderb_extension/libuv/src/win/ntdll.h +130 -0
  21. data/ext/noderb_extension/libuv/src/win/pipe.c +105 -27
  22. data/ext/noderb_extension/libuv/src/win/process.c +76 -5
  23. data/ext/noderb_extension/libuv/src/win/req.c +7 -0
  24. data/ext/noderb_extension/libuv/src/win/winapi.c +52 -0
  25. data/ext/noderb_extension/libuv/test/benchmark-pound.c +50 -48
  26. data/ext/noderb_extension/libuv/test/echo-server.c +2 -2
  27. data/ext/noderb_extension/libuv/test/test-list.h +2 -0
  28. data/ext/noderb_extension/libuv/test/test-spawn.c +48 -1
  29. data/ext/noderb_extension/noderb.c +38 -339
  30. data/ext/noderb_extension/noderb.h +18 -2
  31. data/ext/noderb_extension/noderb_common.h +13 -0
  32. data/ext/noderb_extension/noderb_dns.c +37 -0
  33. data/ext/noderb_extension/noderb_dns.h +15 -0
  34. data/ext/noderb_extension/noderb_process.c +126 -0
  35. data/ext/noderb_extension/noderb_process.h +17 -0
  36. data/ext/noderb_extension/noderb_tcp.c +127 -0
  37. data/ext/noderb_extension/noderb_tcp.h +19 -0
  38. data/ext/noderb_extension/noderb_timers.c +58 -0
  39. data/ext/noderb_extension/noderb_timers.h +16 -0
  40. data/ext/noderb_extension/noderb_tools.c +127 -0
  41. data/ext/noderb_extension/noderb_tools.h +33 -0
  42. data/lib/noderb/dns.rb +11 -0
  43. data/lib/noderb/next_tick.rb +2 -1
  44. data/lib/noderb/tcp.rb +27 -0
  45. data/lib/noderb/timers.rb +24 -0
  46. data/lib/noderb/version.rb +1 -1
  47. data/lib/noderb.rb +6 -1
  48. metadata +23 -7
  49. data/ext/noderb_extension/libuv/build/all.gyp +0 -254
  50. data/ext/noderb_extension/libuv/doc/desired-api.md +0 -159
  51. /data/ext/noderb_extension/libuv/{build/common.gypi → common.gypi} +0 -0
@@ -0,0 +1,127 @@
1
+ #include <noderb_common.h>
2
+ #include <noderb_tcp.h>
3
+
4
+ #include <noderb.h>
5
+ #include <noderb_tools.h>
6
+
7
+ typedef struct {
8
+ NODERB_BASIC_HANDLE
9
+ } nodeRb_client;
10
+
11
+ /*
12
+ NodeRb TCP
13
+ */
14
+
15
+ void nodeRb_tcp_on_close(uv_handle_t* client) {
16
+ // Read data saved in Ruby
17
+ nodeRb_client *client_data = client->data;
18
+ VALUE object = nodeRb_get_class_from_id(client_data->target);
19
+ // Call callback for connection close
20
+ rb_funcall(object, rb_intern("on_close"), 0, 0);
21
+ // Allow GC of handler instance
22
+ nodeRb_unregister_instance(object);
23
+ rb_iv_set(object, "@_handle", Qnil);
24
+ // Clean up some memory
25
+ free(client_data);
26
+ free(client);
27
+ }
28
+
29
+ void nodeRb_tcp_on_shutdown(uv_shutdown_t* req, int status) {
30
+ // When connection shutdown, close it
31
+ uv_close((uv_handle_t*) req->handle, nodeRb_tcp_on_close);
32
+ free(req);
33
+ }
34
+
35
+ VALUE nodeRb_tcp_close_connection(VALUE self) {
36
+ // Allocate new shutdown request
37
+ uv_shutdown_t* req = malloc(sizeof (uv_shutdown_t));
38
+ // Read data saved in Ruby
39
+ VALUE rhandler = rb_iv_get(self, "@_handle");
40
+ uv_stream_t *handle;
41
+ Data_Get_Struct(rhandler, uv_stream_t, handle);
42
+ // Request shutdown of stream
43
+ uv_shutdown(req, handle, nodeRb_tcp_on_shutdown);
44
+ }
45
+
46
+ VALUE nodeRb_tcp_send_data(VALUE self, VALUE data) {
47
+ // Read data saved in Ruby
48
+ uv_stream_t *handle;
49
+ Data_Get_Struct(rb_iv_get(self, "@_handle"), uv_stream_t, handle);
50
+ // Request write to stream
51
+ nodeRb_write(handle, rb_string_value_cstr(&data), RSTRING_LEN(data));
52
+ }
53
+
54
+ /*
55
+ NodeRb TCP client
56
+ */
57
+
58
+ void nodeRb_tcp_on_client_connect(uv_connect_t* client, int status) {
59
+ nodeRb_client *client_data = client->handle->data;
60
+ VALUE obj = nodeRb_get_class_from_id(client_data->target);
61
+ rb_iv_set(obj, "@_handle", Data_Wrap_Struct(nodeRb_get_nodeRb_pointer(), 0, NULL, client->handle));
62
+ rb_funcall(obj, rb_intern("on_connect"), 0, 0);
63
+ uv_read_start((uv_stream_t*) client->handle, nodeRb_read_alloc, nodeRb_read);
64
+ }
65
+
66
+ VALUE nodeRb_tcp_startClient(VALUE self, VALUE address, VALUE port, VALUE clazz) {
67
+ // Allocate memory for connection
68
+ uv_tcp_t *handle = malloc(sizeof (uv_tcp_t));
69
+ uv_tcp_init(handle);
70
+ uv_connect_t *connect = malloc(sizeof (uv_connect_t));
71
+ // Translate IP address
72
+ struct sockaddr_in socket = uv_ip4_addr(rb_string_value_cstr(&address), (int) rb_num2long(port));
73
+ // Save client data
74
+ nodeRb_client *client_data = malloc(sizeof (nodeRb_client));
75
+ client_data->target = rb_num2long(rb_obj_id(clazz));
76
+ client_data->target_callback = (char*) "on_data";
77
+ handle->data = client_data;
78
+ // Open socket
79
+ int r = uv_tcp_connect(connect, handle, socket, nodeRb_tcp_on_client_connect);
80
+ if (nodeRb_handle_error(r)) return Qnil;
81
+ };
82
+
83
+ /*
84
+ NodeRb TCP server
85
+ */
86
+
87
+ void nodeRb_tcp_on_server_connect(uv_stream_t* server, int status) {
88
+ // Allocate memory for client data
89
+ nodeRb_client *client_data = malloc(sizeof (nodeRb_client));
90
+ // Allocate for client
91
+ uv_stream_t *client = malloc(sizeof (uv_tcp_t));
92
+ uv_tcp_init((uv_tcp_t*) client);
93
+ // Accept connection
94
+ int r = uv_accept(server, client);
95
+ if (nodeRb_handle_error(r)) return;
96
+ // Initialise new instance of handler class
97
+ VALUE clazz = rb_path2class(server->data);
98
+ VALUE obj = rb_funcall(clazz, rb_intern("new"), 0, 0);
99
+ // Be safe from GC
100
+ nodeRb_register_instance(obj);
101
+ // Call callback
102
+ rb_funcall(obj, rb_intern("on_connect"), 0, 0);
103
+ // Save client data with this connection handler instance
104
+ rb_iv_set(obj, "@_handle", Data_Wrap_Struct(nodeRb_get_nodeRb_pointer(), 0, NULL, client));
105
+ // Get object id of handler instance
106
+ client_data->target = rb_num2long(rb_obj_id(obj));
107
+ client_data->target_callback = (char*) "on_data";
108
+ client->data = client_data;
109
+ uv_read_start(client, nodeRb_read_alloc, nodeRb_read);
110
+ }
111
+
112
+ VALUE nodeRb_tcp_startServer(VALUE self, VALUE address, VALUE port, VALUE clazz) {
113
+ // Allocate for server
114
+ uv_tcp_t *server = malloc(sizeof (uv_tcp_t));
115
+ uv_tcp_init(server);
116
+ // Translate IP address
117
+ struct sockaddr_in socket = uv_ip4_addr(rb_string_value_cstr(&address), (int) rb_num2long(port));
118
+ // Bind on socket
119
+ int r = uv_tcp_bind(server, socket);
120
+ if (nodeRb_handle_error(r)) return Qnil;
121
+ // Listen on server
122
+ r = uv_listen((uv_stream_t*) server, 128, nodeRb_tcp_on_server_connect);
123
+ if (nodeRb_handle_error(r)) return Qnil;
124
+ // Save information for server
125
+ VALUE name = rb_class_name(clazz);
126
+ server->data = rb_string_value_cstr(&name);
127
+ };
@@ -0,0 +1,19 @@
1
+ #ifndef NODERB_TCP_SERVER_H
2
+ #define NODERB_TCP_SERVER_H
3
+
4
+ #ifdef __cplusplus
5
+ extern "C" {
6
+ #endif
7
+
8
+ VALUE nodeRb_tcp_startClient(VALUE self, VALUE address, VALUE port, VALUE clazz);
9
+
10
+ VALUE nodeRb_tcp_startServer(VALUE self, VALUE address, VALUE port, VALUE clazz);
11
+ VALUE nodeRb_tcp_send_data(VALUE self, VALUE data);
12
+ VALUE nodeRb_tcp_close_connection(VALUE self);
13
+
14
+ #ifdef __cplusplus
15
+ }
16
+ #endif
17
+
18
+ #endif /* NODERB_TCP_SERVER_H */
19
+
@@ -0,0 +1,58 @@
1
+ #include <noderb_common.h>
2
+ #include <noderb_timers.h>
3
+
4
+ #include <noderb_tools.h>
5
+ #include <noderb.h>
6
+
7
+ typedef struct {
8
+ long target;
9
+ int repeat;
10
+ } nodeRb_timers_handle;
11
+
12
+ void nodeRb_timers_callback(uv_timer_t* handle, int status){
13
+ // Load data
14
+ nodeRb_timers_handle* data = (nodeRb_timers_handle*) handle->data;
15
+ VALUE handler = nodeRb_get_class_from_id(data->target);
16
+ // Run callback
17
+ rb_funcall(handler, rb_intern("call"), 1, handler);
18
+ if(data->repeat == 0){
19
+ // Let the GC work
20
+ nodeRb_unregister_instance(handler);
21
+ // Free memory
22
+ free(data);
23
+ free(handle);
24
+ }
25
+ }
26
+
27
+ VALUE nodeRb_timers_stop(VALUE self){
28
+ // Load data
29
+ uv_timer_t *handle;
30
+ Data_Get_Struct(rb_iv_get(self, "@_handle"), uv_timer_t, handle);
31
+ // Stop timer
32
+ uv_timer_stop(handle);
33
+ // Let the GC work
34
+ nodeRb_unregister_instance(self);
35
+ // Free memory
36
+ free((nodeRb_timers_handle*) handle->data);
37
+ free(handle);
38
+ }
39
+
40
+ VALUE nodeRb_timers_once(VALUE self, VALUE timeout, VALUE repeat, VALUE handler){
41
+ // Allocate memory
42
+ uv_timer_t* handle = (uv_timer_t*) malloc(sizeof(uv_timer_t));
43
+ nodeRb_timers_handle* data = (nodeRb_timers_handle*) malloc(sizeof(nodeRb_timers_handle));
44
+ // Save from GC
45
+ nodeRb_register_instance(handler);
46
+ // Save data for later use
47
+ if(rb_num2long(timeout) > 0){
48
+ data->repeat = 1;
49
+ }
50
+ data->target = rb_num2long(rb_obj_id(handler));
51
+ // Initialize
52
+ uv_timer_init(handle);
53
+ handle->data = data;
54
+ // Save handle
55
+ rb_iv_set(handler, "@_handle", Data_Wrap_Struct(nodeRb_get_nodeRb_pointer(), 0, NULL, handle));
56
+ // Schedule
57
+ uv_timer_start(handle, nodeRb_timers_callback, rb_num2long(timeout), rb_num2long(repeat));
58
+ }
@@ -0,0 +1,16 @@
1
+ #ifndef NODERB_TIMERS_H
2
+ #define NODERB_TIMERS_H
3
+
4
+ #ifdef __cplusplus
5
+ extern "C" {
6
+ #endif
7
+
8
+ VALUE nodeRb_timers_once(VALUE self, VALUE timeout, VALUE repeat, VALUE callback);
9
+ VALUE nodeRb_timers_stop(VALUE self);
10
+
11
+ #ifdef __cplusplus
12
+ }
13
+ #endif
14
+
15
+ #endif /* NODERB_TIMERS_H */
16
+
@@ -0,0 +1,127 @@
1
+ #include <noderb_common.h>
2
+ #include <noderb_tools.h>
3
+ #include <noderb.h>
4
+
5
+ /*
6
+ Consolidate read and write request to allow cross-functionality like proxy
7
+ */
8
+
9
+ // Allocates memory exactly as libuv suggests, this might be one area of optimization
10
+ uv_buf_t nodeRb_read_alloc(uv_stream_t* handle, size_t suggested_size) {
11
+ uv_buf_t buf;
12
+ buf.base = (char*) malloc(suggested_size);
13
+ buf.len = suggested_size;
14
+ return buf;
15
+ }
16
+
17
+ // Called when data read from stream
18
+ void nodeRb_read(uv_stream_t* uv_handle, ssize_t nread, uv_buf_t buf) {
19
+ nodeRb_basic_handle* handle = (nodeRb_basic_handle*) uv_handle->data;
20
+ if (nread < 0) {
21
+ if (buf.base) {
22
+ free(buf.base);
23
+ }
24
+ return;
25
+ }
26
+ if (nread == 0) {
27
+ free(buf.base);
28
+ return;
29
+ }
30
+ rb_funcall(nodeRb_get_class_from_id(handle->target), rb_intern(handle->target_callback), 1, rb_str_new(buf.base, nread));
31
+ free(buf.base);
32
+ }
33
+
34
+ // Requests write to stream
35
+ void nodeRb_write(uv_stream_t* handle, char* data, size_t len){
36
+ if(handle->type != UV_TCP && handle->type != UV_NAMED_PIPE){
37
+ return;
38
+ }
39
+ write_req_t* wr = malloc(sizeof(write_req_t));
40
+ wr->buf.base = data;
41
+ wr->buf.len = len;
42
+ uv_write(&wr->req, handle, &wr->buf, 1, nodeRb_after_write);
43
+ }
44
+
45
+ // Called after data written to stream
46
+ void nodeRb_after_write(uv_write_t* req, int status) {
47
+ if (status) {
48
+ uv_err_t err = uv_last_error();
49
+ fprintf(stderr, "uv_write error: %s\n", uv_strerror(err));
50
+ }
51
+ write_req_t* wr = (write_req_t*) req;
52
+ free(wr);
53
+ }
54
+
55
+ /*
56
+ NodeRb.next_tick runs block of code on the next iteration of the loop
57
+ */
58
+
59
+ // Indicator that we already have something to run
60
+ int nodeRbNextTickStatus = 0;
61
+
62
+ // Invoked by the loop to execute scheduled blocks in Ruby
63
+ void nodeRb_next_tick(uv_idle_t* handle, int status) {
64
+ uv_idle_stop(handle);
65
+ free(handle);
66
+ nodeRbNextTickStatus = 0;
67
+ rb_funcall(nodeRb_get_nodeRb_module(), rb_intern("next_tick_execute"), 0);
68
+ }
69
+
70
+ // Schedules invocation on the next iteration if not already scheduled
71
+ VALUE nodeRb_nextTick(VALUE self) {
72
+ if(nodeRbNextTickStatus == 0){
73
+ uv_idle_t* handle = malloc(sizeof(uv_idle_t));
74
+ uv_idle_init(handle);
75
+ nodeRbNextTickStatus = 1;
76
+ uv_idle_start(handle, nodeRb_next_tick);
77
+ }
78
+ }
79
+
80
+ /*
81
+ Tools to simplify NodeRb development
82
+ */
83
+
84
+ // Register object to be GC safe
85
+ VALUE nodeRb_register_instance(VALUE instance) {
86
+ rb_ary_push(rb_iv_get(nodeRb_get_nodeRb_module(), "@instances"), instance);
87
+ }
88
+
89
+ // Ruby wrapper for previous function
90
+ VALUE nodeRb_registerInstance(VALUE self, VALUE instance) {
91
+ nodeRb_register_instance(instance);
92
+ }
93
+
94
+ // Unregister object to be GC safe
95
+ VALUE nodeRb_unregister_instance(VALUE instance) {
96
+ rb_ary_delete(rb_iv_get(nodeRb_get_nodeRb_module(), "@instances"), instance);
97
+ }
98
+
99
+ // Ruby wrapper for previous function
100
+ VALUE nodeRb_unregisterInstance(VALUE self, VALUE instance) {
101
+ nodeRb_unregister_instance(instance);
102
+ }
103
+
104
+ // Transforms Ruby Object.object_id back into the Object
105
+ VALUE nodeRb_get_class_from_id(long id) {
106
+ return rb_funcall(rb_const_get(rb_cObject, rb_intern("ObjectSpace")), rb_intern("_id2ref"), 1, rb_int2inum(id));
107
+ }
108
+
109
+ // Used for handling errors inside NodeRb
110
+ int nodeRb_handle_error(int e) {
111
+ if (e) {
112
+ uv_err_t error = uv_last_error();
113
+ fprintf(stderr, "%s\n", uv_strerror(error));
114
+ return 1;
115
+ } else {
116
+ return 0;
117
+ }
118
+ };
119
+
120
+ // Starts the event loop and adds one reference to ensure loop will run
121
+ VALUE nodeRb_start(VALUE self) {
122
+ uv_ref();
123
+ if (rb_block_given_p()) {
124
+ rb_yield(Qnil);
125
+ }
126
+ uv_run();
127
+ };
@@ -0,0 +1,33 @@
1
+ #ifndef NODERB_TOOLS_H
2
+ #define NODERB_TOOLS_H
3
+
4
+ #ifdef __cplusplus
5
+ extern "C" {
6
+ #endif
7
+
8
+ VALUE nodeRb_nextTick(VALUE self);
9
+ VALUE nodeRb_start(VALUE self);
10
+
11
+ VALUE nodeRb_register_instance(VALUE instance);
12
+ VALUE nodeRb_registerInstance(VALUE self, VALUE instance);
13
+ VALUE nodeRb_unregister_instance(VALUE instance);
14
+ VALUE nodeRb_unregisterInstance(VALUE self, VALUE instance);
15
+
16
+ VALUE nodeRb_get_class_from_id(long id);
17
+
18
+ typedef struct {
19
+ uv_write_t req;
20
+ uv_buf_t buf;
21
+ } write_req_t;
22
+
23
+ uv_buf_t nodeRb_read_alloc(uv_stream_t* handle, size_t suggested_size);
24
+ void nodeRb_read(uv_stream_t* uv_handle, ssize_t nread, uv_buf_t buf);
25
+ void nodeRb_write(uv_stream_t* handle, char* data, size_t len);
26
+ void nodeRb_after_write(uv_write_t* req, int status);
27
+
28
+ #ifdef __cplusplus
29
+ }
30
+ #endif
31
+
32
+ #endif /* NODERB_TOOLS_H */
33
+
data/lib/noderb/dns.rb ADDED
@@ -0,0 +1,11 @@
1
+ module NodeRb
2
+
3
+ class << self
4
+
5
+ def resolve hostname, &block
6
+ NodeRb.resolve_native(hostname, block)
7
+ end
8
+
9
+ end
10
+
11
+ end
@@ -1,9 +1,10 @@
1
1
  module NodeRb
2
+
2
3
  class << self
3
4
 
4
5
  def next_tick &block
5
6
  ( @next_tick ||= [] ) << block
6
- NodeRb.native_next_tick
7
+ NodeRb.send(:next_tick_native)
7
8
  end
8
9
 
9
10
  def next_tick_execute
data/lib/noderb/tcp.rb ADDED
@@ -0,0 +1,27 @@
1
+ module NodeRb
2
+
3
+ class << self
4
+
5
+ def start_server address, port, clazz
6
+ if /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/.match(address)
7
+ NodeRb.start_server_native(address, port, clazz)
8
+ else
9
+ NodeRb.resolve(address) do |ip|
10
+ NodeRb.start_server_native(ip, port, clazz)
11
+ end
12
+ end
13
+ end
14
+
15
+ def start_client address, port, clazz
16
+ if /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/.match(address)
17
+ NodeRb.start_client_native(address, port, clazz)
18
+ else
19
+ NodeRb.resolve(address) do |ip|
20
+ NodeRb.start_client_native(ip, port, clazz)
21
+ end
22
+ end
23
+ end
24
+
25
+ end
26
+
27
+ end
@@ -0,0 +1,24 @@
1
+ module NodeRb
2
+
3
+ class << self
4
+
5
+ def once timeout, &block
6
+ NodeRb.once_native(timeout * 1000, 0, block)
7
+ end
8
+
9
+ def repeat repeat, handler, timeout = nil
10
+ timeout ||= repeat
11
+ NodeRb.once_native(timeout * 1000, repeat * 1000, handler)
12
+ end
13
+
14
+ end
15
+
16
+ module Timer
17
+
18
+ def call
19
+
20
+ end
21
+
22
+ end
23
+
24
+ end
@@ -1,3 +1,3 @@
1
1
  module NodeRb
2
- VERSION = "0.0.3" unless const_defined?(:VERSION)
2
+ VERSION = "0.0.4" unless const_defined?(:VERSION)
3
3
  end
data/lib/noderb.rb CHANGED
@@ -1,7 +1,12 @@
1
1
  # Native extension
2
2
  require "noderb_extension"
3
- # Ruby extension
3
+ # Tools
4
4
  require "noderb/version"
5
5
  require "noderb/next_tick"
6
+ require "noderb/timers"
7
+ # System
8
+ require "noderb/tcp"
9
+ require "noderb/dns"
10
+ # Helpers
6
11
  require "noderb/connection"
7
12
  require "noderb/process"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: noderb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-08-09 00:00:00.000000000Z
12
+ date: 2011-08-19 00:00:00.000000000Z
13
13
  dependencies: []
14
14
  description: Port of the NodeJs library to Ruby, featuring asynchronous IO operations
15
15
  of all kinds.
@@ -21,15 +21,18 @@ extensions:
21
21
  extra_rdoc_files: []
22
22
  files:
23
23
  - lib/noderb/connection.rb
24
+ - lib/noderb/dns.rb
24
25
  - lib/noderb/next_tick.rb
25
26
  - lib/noderb/process.rb
27
+ - lib/noderb/tcp.rb
28
+ - lib/noderb/timers.rb
26
29
  - lib/noderb/version.rb
27
30
  - lib/noderb.rb
28
31
  - ext/noderb_extension/extconf.rb
32
+ - ext/noderb_extension/libuv/all.gyp
29
33
  - ext/noderb_extension/libuv/AUTHORS
30
- - ext/noderb_extension/libuv/build/all.gyp
31
- - ext/noderb_extension/libuv/build/common.gypi
32
- - ext/noderb_extension/libuv/build/gyp_uv
34
+ - ext/noderb_extension/libuv/BSDmakefile
35
+ - ext/noderb_extension/libuv/common.gypi
33
36
  - ext/noderb_extension/libuv/config-mingw.mk
34
37
  - ext/noderb_extension/libuv/config-unix.mk
35
38
  - ext/noderb_extension/libuv/create-msvs-files.bat
@@ -222,8 +225,8 @@ files:
222
225
  - ext/noderb_extension/libuv/deps/pthread-win32/version.rc
223
226
  - ext/noderb_extension/libuv/deps/pthread-win32/w32_CancelableWait.c
224
227
  - ext/noderb_extension/libuv/deps/pthread-win32/WinCE-PORT
225
- - ext/noderb_extension/libuv/doc/desired-api.md
226
228
  - ext/noderb_extension/libuv/doc/iocp-links.html
229
+ - ext/noderb_extension/libuv/gyp_uv
227
230
  - ext/noderb_extension/libuv/include/ares.h
228
231
  - ext/noderb_extension/libuv/include/ares_version.h
229
232
  - ext/noderb_extension/libuv/include/eio.h
@@ -390,6 +393,7 @@ files:
390
393
  - ext/noderb_extension/libuv/src/win/handle.c
391
394
  - ext/noderb_extension/libuv/src/win/internal.h
392
395
  - ext/noderb_extension/libuv/src/win/loop-watcher.c
396
+ - ext/noderb_extension/libuv/src/win/ntdll.h
393
397
  - ext/noderb_extension/libuv/src/win/pipe.c
394
398
  - ext/noderb_extension/libuv/src/win/process.c
395
399
  - ext/noderb_extension/libuv/src/win/req.c
@@ -398,6 +402,7 @@ files:
398
402
  - ext/noderb_extension/libuv/src/win/tcp.c
399
403
  - ext/noderb_extension/libuv/src/win/timer.c
400
404
  - ext/noderb_extension/libuv/src/win/util.c
405
+ - ext/noderb_extension/libuv/src/win/winapi.c
401
406
  - ext/noderb_extension/libuv/test/benchmark-ares.c
402
407
  - ext/noderb_extension/libuv/test/benchmark-getaddrinfo.c
403
408
  - ext/noderb_extension/libuv/test/benchmark-list.h
@@ -443,6 +448,17 @@ files:
443
448
  - ext/noderb_extension/libuv/test/test-timer.c
444
449
  - ext/noderb_extension/noderb.c
445
450
  - ext/noderb_extension/noderb.h
451
+ - ext/noderb_extension/noderb_common.h
452
+ - ext/noderb_extension/noderb_dns.c
453
+ - ext/noderb_extension/noderb_dns.h
454
+ - ext/noderb_extension/noderb_process.c
455
+ - ext/noderb_extension/noderb_process.h
456
+ - ext/noderb_extension/noderb_tcp.c
457
+ - ext/noderb_extension/noderb_tcp.h
458
+ - ext/noderb_extension/noderb_timers.c
459
+ - ext/noderb_extension/noderb_timers.h
460
+ - ext/noderb_extension/noderb_tools.c
461
+ - ext/noderb_extension/noderb_tools.h
446
462
  - LICENSE
447
463
  - README.md
448
464
  homepage: http://github.com/marekjelen/noderb
@@ -465,7 +481,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
465
481
  version: 1.3.6
466
482
  requirements: []
467
483
  rubyforge_project: noderb
468
- rubygems_version: 1.8.5
484
+ rubygems_version: 1.8.8
469
485
  signing_key:
470
486
  specification_version: 3
471
487
  summary: Port of the NodeJs library to Ruby