rxio 0.13.6 → 0.13.7

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b1b13f7c2a5d6f073bbc1faca1e077ca3a5586e8
4
- data.tar.gz: fb55abf384c23c250df0141443251392e0dd10fc
3
+ metadata.gz: 7ba978c3b4a32fa7123729faa8a8ef9b9a349f3d
4
+ data.tar.gz: ae1ba6d9308798d554e1420a611ba84cebdf0f69
5
5
  SHA512:
6
- metadata.gz: ff03cb6cba5758bd1e5709848378dbc50098b516eafa069229cc9fd47d84a8286e4944d24924cb660f352da1223fdf05e678758e9fbccc5fc83affd36d4d777f
7
- data.tar.gz: 32dd7a9f0da6a006d156ce040714b7630f86e77b66cc46102c394b51cea3b9fcc6e24f35cc6d665c9616fc3f34534ebbac43cd657d2b29bae926a29d98108815
6
+ metadata.gz: cb4749f998fc6afc4b4919c2944edd1bdc8d105bd2ad4fef25a70fd6e7c603bc56da7cab752a40d3f94a857399c2926bb82b0eaced70f9a5c613ff0f504556f4
7
+ data.tar.gz: 91f54ed3418905a5704beda6ecdb900b64b84408dcfcd0b9f741003e2fdd85475b54eabe7d2c85ebdaa2f3981b54e2d9bed07fb23ac6a60afd64b9e72c064fbf
data/lib/rxio/client.rb CHANGED
@@ -27,7 +27,7 @@ module RxIO
27
27
  # Select Timeout (seconds)
28
28
  SELECT_TIMEOUT = 0.1
29
29
 
30
- # Construct
30
+ # Construct:
31
31
  # Builds a *Client* around a given _service_handler_ module, set to connect to _addr_ on _port_.
32
32
  # @param [String] addr Address to which the client should connect
33
33
  # @param [Fixnum] port Port on which the client should connect
@@ -54,8 +54,8 @@ module RxIO
54
54
  }
55
55
  end
56
56
 
57
- # Send Message
58
- # Enqueues a Message to be sent to the server
57
+ # Send Message:
58
+ # Enqueues a Message to be sent to the server.
59
59
  # @param [String] msg
60
60
  def send_msg msg
61
61
 
@@ -66,7 +66,7 @@ module RxIO
66
66
  @service_handler.send_msg @client, msg
67
67
  end
68
68
 
69
- # Run
69
+ # Run:
70
70
  # Executes the main client loop, taking care of I/O scheduling and message handling.
71
71
  def run
72
72
 
@@ -85,9 +85,9 @@ module RxIO
85
85
  @sock = nil
86
86
  end
87
87
 
88
- # Stop
88
+ # Stop:
89
89
  # Requests the client loop to stop executing.
90
- # The _run_ method should return shortly after calling _stop_
90
+ # The _run_ method should return shortly after calling _stop_.
91
91
  def stop
92
92
  @stop = true
93
93
  end
@@ -95,7 +95,7 @@ module RxIO
95
95
  # Privates
96
96
  private
97
97
 
98
- # Update
98
+ # Update:
99
99
  # Serves as the client loop main method, performing I/O scheduling and message handling.
100
100
  def update
101
101
 
@@ -110,8 +110,8 @@ module RxIO
110
110
  wr.each { |s| write_sock s } if wr
111
111
  end
112
112
 
113
- # Ensure Socket is available
114
- # Re-creates the socket in the event of failure
113
+ # Ensure Socket is available:
114
+ # Re-creates the socket in the event of failure.
115
115
  def ensure_sock
116
116
 
117
117
  # Check
@@ -146,16 +146,16 @@ module RxIO
146
146
  @sock
147
147
  end
148
148
 
149
- # Get Endpoint for Socket - Callback for IOBase
150
- # Simply returns the Client Hash
149
+ # Get Endpoint for Socket - Callback for IOBase:
150
+ # Simply returns the Client Hash.
151
151
  # @param [TCPSocket] _s
152
152
  # @return [Hash] The Client Hash
153
153
  def get_endpoint_for_sock _s
154
154
  @client
155
155
  end
156
156
 
157
- # On Drop - Callback for IOBase
158
- # Kills the socket
157
+ # On Drop - Callback for IOBase:
158
+ # Kills the socket.
159
159
  # @param [Hash] _e
160
160
  def on_drop _e
161
161
  @sock.close rescue nil
@@ -4,11 +4,11 @@
4
4
  # RxIO Module
5
5
  module RxIO
6
6
 
7
- # Handler Base Module
7
+ # Handler Base Module:
8
8
  # Provides common abstractions to Service Handler implementations.
9
9
  module HandlerBase
10
10
 
11
- # Write
11
+ # Write:
12
12
  # Writes one or more chunks of data to the endpoint's output buffer (:obuf).
13
13
  # @param [Hash] endpoint
14
14
  # @param [String] data One or more chunks of data to be written to the ouput buffer
@@ -18,7 +18,7 @@ module RxIO
18
18
  data.each { |c| endpoint[:lock].synchronize { endpoint[:obuf] << c } }
19
19
  end
20
20
 
21
- # Buffer Input Chunk
21
+ # Buffer Input Chunk:
22
22
  # Writes a chunk of data to the endpoint's input buffer (:ibuf).
23
23
  # @param [Hash] endpoint
24
24
  # @param [String] chunk
data/lib/rxio/io_base.rb CHANGED
@@ -10,8 +10,8 @@ module RxIO
10
10
  # Chunk Size
11
11
  CHUNK_SIZE = 1024
12
12
 
13
- # Process Input
14
- # Processes Input for an Endpoint, in the form of a data chunk
13
+ # Process Input:
14
+ # Processes Input for an Endpoint, in the form of a data chunk.
15
15
  # @param [Hash] endpoint
16
16
  # @param [String] chunk A chunk of data, as received by the socket
17
17
  def process_input endpoint, chunk
@@ -25,7 +25,10 @@ module RxIO
25
25
  # Process Messages
26
26
  @service_handler.handle_msg endpoint, endpoint[:msgs].shift until endpoint[:msgs].empty?
27
27
 
28
- # Rescue
28
+ # Sub-Process Input
29
+ @service_handler.subprocess_input endpoint if @service_handler.respond_to? :subprocess_input
30
+
31
+ # Rescue
29
32
  rescue Exception => e
30
33
 
31
34
  # Peer Error
@@ -33,7 +36,7 @@ module RxIO
33
36
  end
34
37
  end
35
38
 
36
- # Read Socket
39
+ # Read Socket:
37
40
  # Attempts to read as many bytes as possible (up to CHUNK_SIZE) from a given socket _s_, passing the data chunks to _process_input_.
38
41
  # @param [TCPSocket] s
39
42
  def read_sock s
@@ -54,7 +57,7 @@ module RxIO
54
57
  process_input e, chunk
55
58
  end
56
59
 
57
- # Write Socket
60
+ # Write Socket:
58
61
  # Attempts to write as many bytes as possible to a given socket _s_ from the associated client's output buffer.
59
62
  # @param [TCPSocket] s
60
63
  def write_sock s
@@ -74,8 +77,8 @@ module RxIO
74
77
  end
75
78
  end
76
79
 
77
- # Drop Endpoint
78
- # Notifies the Service Handler and Parent Implementation (in that order) of a dropped endpoint
80
+ # Drop Endpoint:
81
+ # Notifies the Service Handler and Parent Implementation (in that order) of a dropped endpoint.
79
82
  # @param [Hash] endpoint
80
83
  def drop_endpoint endpoint
81
84
 
@@ -86,12 +89,12 @@ module RxIO
86
89
  on_drop endpoint
87
90
  end
88
91
 
89
- # Peer Error
90
- # Handles an Error from a Peer
92
+ # Peer Error:
93
+ # Handles an Error from a Peer.
91
94
  # @param [Hash] p Endpoint Hash
92
95
  # @param [String] e Error String
93
96
  def peer_error p, e
94
- puts "[!] ERROR [#{p[:peer][:addr]}:#{p[:peer][:port]}] - #{e}"
97
+ puts "[!] ERROR [#{p[:peer][:addr]}:#{p[:peer][:port]}] - #{e} - #{e.backtrace.collect { |b| " * #{b}" }.join "\n"}"
95
98
  drop_endpoint p
96
99
  end
97
100
  end
@@ -10,7 +10,7 @@ module RxIO
10
10
  # I/O Filters Module
11
11
  module IOFilters
12
12
 
13
- # Binary-Delimiter I/O Filter
13
+ # Binary-Delimiter I/O Filter:
14
14
  # Splits messages according to a given fixed *binary delimiter*, which can be any number of bytes, defined through the _msg_delim_ method.
15
15
  module BinDelim
16
16
 
@@ -20,14 +20,14 @@ module RxIO
20
20
  base.extend RxIO::HandlerBase
21
21
  end
22
22
 
23
- # Set Message Delimiter
23
+ # Set Message Delimiter:
24
24
  # Used to define the binary string used as message delimiter for this protocol.
25
25
  # @param [String] v The message delimiter string
26
26
  def msg_delim v
27
27
  @msg_delim = v
28
28
  end
29
29
 
30
- # Filter Input
30
+ # Filter Input:
31
31
  # Buffers data chunks sent by the endpoint and extracts messages from them, according to the delimiter defined through _msg_delim_.
32
32
  # @param [Hash] endpoint
33
33
  # @param [String] chunk
@@ -59,7 +59,7 @@ module RxIO
59
59
  end
60
60
  end
61
61
 
62
- # Send Message
62
+ # Send Message:
63
63
  # Buffers a message to be sent to the endpoint, after wrapping it according to the delimiter defined through _msg_delim_.
64
64
  # @param [Hash] endpoint
65
65
  # @param [String] msg
@@ -13,7 +13,7 @@ module RxIO
13
13
  # I/O Filters Module
14
14
  module IOFilters
15
15
 
16
- # Message-Size I/O Filter
16
+ # Message-Size I/O Filter:
17
17
  # Splits messages according to a _4-byte unsigned big-endian integer_ *size* field, which prefixes every message and indicates its length in bytes.
18
18
  module MsgSize
19
19
 
@@ -23,7 +23,7 @@ module RxIO
23
23
  base.extend RxIO::HandlerBase
24
24
  end
25
25
 
26
- # Filter Input
26
+ # Filter Input:
27
27
  # Buffers data chunks sent by the endpoint and extracts messages from them, according to the *size* field present at the beginning of each message.
28
28
  # @param [Hash] endpoint
29
29
  # @param [String] chunk
@@ -52,7 +52,7 @@ module RxIO
52
52
  end
53
53
  end
54
54
 
55
- # Send Message
55
+ # Send Message:
56
56
  # Buffers a message to be sent to the endpoint, after prefixing it with a _size_ field.
57
57
  # @param [Hash] endpoint
58
58
  # @param [String] msg
@@ -8,7 +8,7 @@ require 'rxio/io_filters/msg_size'
8
8
  # RxIO Module
9
9
  module RxIO
10
10
 
11
- # I/O Filters Module
11
+ # I/O Filters Module:
12
12
  # This module provides a set of generic I/O Filters to be used for constructing services.
13
13
  module IOFilters
14
14
  end
data/lib/rxio/service.rb CHANGED
@@ -24,7 +24,7 @@ module RxIO
24
24
  # Select Timeout (seconds)
25
25
  SELECT_TIMEOUT = 0.1
26
26
 
27
- # Construct
27
+ # Construct:
28
28
  # Builds a *Service* around a given _service_handler_ module, set to listen for incoming connections @ _addr_ on _port_.
29
29
  # @param [String] addr Address on which the service should listen
30
30
  # @param [Fixnum] port Port on which the service should listen
@@ -48,9 +48,9 @@ module RxIO
48
48
  @cmap = {}
49
49
  end
50
50
 
51
- # Run
51
+ # Run:
52
52
  # Executes the main service loop, taking care of I/O scheduling, client management and message handling.
53
- # Note: this method blocks until the service loop terminates.
53
+ # This method blocks until the service loop terminates.
54
54
  def run
55
55
 
56
56
  # Update Loop
@@ -79,9 +79,9 @@ module RxIO
79
79
  @serv = nil
80
80
  end
81
81
 
82
- # Stop
82
+ # Stop:
83
83
  # Requests the service loop to stop executing.
84
- # The _run_ method should return shortly after calling _stop_
84
+ # The _run_ method should return shortly after calling _stop_.
85
85
  def stop
86
86
  @stop = true
87
87
  end
@@ -89,7 +89,7 @@ module RxIO
89
89
  # Privates
90
90
  private
91
91
 
92
- # Update
92
+ # Update:
93
93
  # Serves as the service loop main method, performing I/O scheduling, client management and message handling.
94
94
  def update
95
95
 
@@ -104,7 +104,7 @@ module RxIO
104
104
  wr.each { |s| write_sock s } if wr
105
105
  end
106
106
 
107
- # Register Client
107
+ # Register Client:
108
108
  # Creates a new Client around a given socket _s_ and registers it.
109
109
  # Also, notifies the Handler Module if the _on_join_ method is available.
110
110
  # @param [TCPSocket] s The new client's network socket
@@ -145,7 +145,7 @@ module RxIO
145
145
  @service_handler.on_join c if @service_handler.respond_to? :on_join
146
146
  end
147
147
 
148
- # Accept Socket
148
+ # Accept Socket:
149
149
  # Tries to accept any queued connection request in a non-blocking manner.
150
150
  # Registers a new Client through _add_client_ around the newly-accepted socket if present.
151
151
  # @param [TCPServer] s The service's listening socket
@@ -158,16 +158,16 @@ module RxIO
158
158
  add_client ns if ns
159
159
  end
160
160
 
161
- # Get Endpoint for Socket - Callback for IOBase
162
- # Finds the Client associated with a given Socket
161
+ # Get Endpoint for Socket:
162
+ # Callback for IOBase - Finds the Client associated with a given Socket.
163
163
  # @param [TCPSocket] s Any socket
164
164
  # @return [Hash] The Endpoint associated with Socket _s_, or nil
165
165
  def get_endpoint_for_sock s
166
166
  @cmap[s]
167
167
  end
168
168
 
169
- # On Drop - Callback for IOBase
170
- # Unregisters a Client and closes the associated socket.
169
+ # On Drop:
170
+ # Callback for IOBase - Unregisters a Client and closes the associated socket.
171
171
  # @param [Hash] c Client Hash
172
172
  def on_drop c
173
173
 
data/lib/rxio/version.rb CHANGED
@@ -5,5 +5,5 @@
5
5
  module RxIO
6
6
 
7
7
  # Version
8
- VERSION = '0.13.6'
8
+ VERSION = '0.13.7'
9
9
  end
data/lib/rxio.rb CHANGED
@@ -8,7 +8,7 @@ require 'rxio/io_filters'
8
8
  require 'rxio/service'
9
9
  require 'rxio/client'
10
10
 
11
- # RxIO Module
12
- # Root Module for RxIO
11
+ # RxIO Module:
12
+ # Root Module for RxIO.
13
13
  module RxIO
14
14
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rxio
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.13.6
4
+ version: 0.13.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eresse
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-02-27 00:00:00.000000000 Z
11
+ date: 2017-03-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler