nickel-silver-server 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
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