noderb 0.0.3 → 0.0.4

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.
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