nickel-silver-server 0.0.2 → 0.0.3

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.
data/History.txt CHANGED
@@ -1,3 +1,11 @@
1
+ == 0.0.3 2008-03-19
2
+ * 1 minor enhancement:
3
+ * Tidy before first 'public' release
4
+
5
+ == 0.0.2 2008-03-19
6
+ * 1 bugfix
7
+ * Correctly load interface and server files when gem is 'require'd
8
+
1
9
  == 0.0.1 2008-03-18
2
10
 
3
11
  * 3 major enhancements:
@@ -5,5 +13,3 @@
5
13
  * Complete LocoNetOverTCP version 1 implementation
6
14
  * Support for the LocoBuffer-USB
7
15
 
8
- * 1 bugfix
9
- * Correctly load interface and server files when gem is 'require'd
data/README.txt CHANGED
@@ -4,29 +4,31 @@
4
4
 
5
5
  == DESCRIPTION:
6
6
 
7
- Ruby, literally, on rails! A Ruby implementation of the LocoNetOverTCP protocol allowing remote clients to connect to Digitrax based model railway layouts. Also included are a number of tools for LocoNet logging and locomotive control.
7
+ A Ruby server implementing the LocoNetOverTCP protocol allowing remote clients to connect to Digitrax based model railway layouts. Currently supports version 1 of the protocol.
8
8
 
9
9
  == FEATURES/PROBLEMS:
10
10
 
11
11
  * Complete support for LocoNetOverTCP version 1
12
+ * Multithreaded server based on GServer
13
+ * Easily extended to use new hardware interfaces
12
14
 
13
15
  == SYNOPSIS:
14
16
 
15
17
  require 'rubygems'
16
- require 'nickel-silver-server'
18
+ require 'nickel-silver-server'
17
19
 
18
- # connect to a LocoBufferUSB on the virtual serial port /dev/tty.serialport
19
- interface = LocoBufferUSB.new( '/dev/tty.serialport' )
20
+ # connect to a LocoBufferUSB on the virtual serial port /dev/tty.serialport
21
+ interface = LocoBufferUSB.new( '/dev/tty.serialport' )
20
22
 
21
- # create a server using the default port (i.e. 5626, 'loco' spelt on a phone keypad)
22
- # using our freshly connected LocoBuffer-USB
23
- server = LocoNetServer.new( interface )
23
+ # create a server using the default port (i.e. 5626, 'loco' spelt on a phone keypad)
24
+ # using our freshly connected LocoBuffer-USB
25
+ server = LocoNetServer.new( interface )
24
26
 
25
- # start the server
26
- server.start
27
+ # start the server
28
+ server.start
27
29
 
28
- # wait for the server to stop before exiting
29
- server.join
30
+ # wait for the server to stop before exiting
31
+ server.join
30
32
 
31
33
  == REQUIREMENTS:
32
34
 
@@ -3,7 +3,7 @@ module NickelSilver #:nodoc:
3
3
  module VERSION #:nodoc:
4
4
  MAJOR = 0
5
5
  MINOR = 0
6
- TINY = 2
6
+ TINY = 3
7
7
 
8
8
  STRING = [MAJOR, MINOR, TINY].join('.')
9
9
  end
@@ -5,12 +5,58 @@ require 'loconetserver'
5
5
 
6
6
  module NickelSilver
7
7
  module Server
8
- # nothing here yet
9
- # all the action is in LocoNetServer.rb
10
8
 
9
+ # An interface class should provide the following:
10
+ # * Store incoming packets as FixNums representing bytes in a buffer array
11
+ # * Send outgoing bytes (represented as FixNums in a buffer array) to LocoNet
12
+ # * Use a Mutex to lock access to the buffers when in use (remember Nickel-Silver is multithreaded)
13
+ # * Provide a method that causes your interface to start collecting packets
14
+ #
15
+ # The interface is simple. Only the following public methods are needed:
16
+ # * Accessors for input_buffer, output_buffer and io_mutex
17
+ # * run() which starts buffering
18
+ #
19
+ # How you do this will depend upon your hardware. Take a look at the LocoBufferUSB class to get
20
+ # an idea of how it might be done.
21
+ #
22
+ # A stub driver might look like the following...
23
+ #
24
+ # class SomeLocoNetInterface
25
+ # attr_accessor :input_buffer, :output_buffer, :io_mutex
26
+ #
27
+ # def initialize
28
+ # # these may be modified at any time by the server
29
+ # @input_buffer = []
30
+ # @output_buffer = []
31
+ #
32
+ # # only make changes when locked using @io_mutex
33
+ # @io_mutex = Mutex.new
34
+ # end
35
+ #
36
+ # def run
37
+ # loop do
38
+ # # get incoming bytes
39
+ # if byte_waiting?
40
+ # @io_mutex.synchronize do
41
+ # # byte getting code here
42
+ # @input_buffer << get_byte
43
+ # end
44
+ # end
45
+ #
46
+ # # send outgoing bytes
47
+ # until @output_buffer.empty? do
48
+ # @io_mutex.synchronize do
49
+ # # send a byte
50
+ # send_byte( @output_buffer.shift )
51
+ # end
52
+ # end
53
+ # end
54
+ # end
55
+ #
56
+ # end
57
+ #
11
58
  module Interface
12
- # nothing here yet
13
- # all the action is in LocoBufferUSB.rb
14
59
  end
60
+
15
61
  end
16
62
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nickel-silver-server
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tobin Richard