Class: Dizby::BasicServer
- Inherits:
-
AbstractServer
- Object
- AbstractServer
- Dizby::BasicServer
- Extended by:
- ClassicAttributeAccess
- Defined in:
- lib/dizby/server/basic.rb
Direct Known Subclasses
Instance Attribute Summary collapse
-
#exported_uri
readonly
private
Returns the value of attribute exported_uri.
-
#front
readonly
private
Returns the value of attribute front.
-
#shutdown_pipe
private
Returns the value of attribute shutdown_pipe.
-
#stream
private
Returns the value of attribute stream.
-
#uri
readonly
Returns the value of attribute uri.
Attributes inherited from AbstractServer
Instance Method Summary collapse
- #accept
- #add_uri_alias(uri)
- #alive? ⇒ Boolean
- #close
- #close_shutdown_pipe private
- #here?(uri) ⇒ Boolean
-
#initialize(uri, front, stream, config) ⇒ BasicServer
constructor
A new instance of BasicServer.
- #shutdown
- #to_id(obj)
- #to_obj(ref)
Methods included from ClassicAttributeAccess
attr_accessor, attr_reader, attr_writer
Methods inherited from AbstractServer
#connect_to, #make_distributed, #spawn_on
Methods included from Configurable
#config_accessor, #config_reader, #config_writer
Constructor Details
#initialize(uri, front, stream, config) ⇒ BasicServer
Returns a new instance of BasicServer.
19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/dizby/server/basic.rb', line 19 def initialize(uri, front, stream, config) super(config) { |msg| "#{uri} : #{msg}" } @uri = uri @front = front @stream = stream @exported_uri = Dizby.monitor([@uri]) @shutdown_pipe = SelfPipe.new(*IO.pipe) end |
Instance Attribute Details
#exported_uri (readonly, private)
Returns the value of attribute exported_uri.
95 96 97 |
# File 'lib/dizby/server/basic.rb', line 95 def exported_uri @exported_uri end |
#front (readonly, private)
Returns the value of attribute front.
95 96 97 |
# File 'lib/dizby/server/basic.rb', line 95 def front @front end |
#shutdown_pipe (private)
Returns the value of attribute shutdown_pipe.
96 97 98 |
# File 'lib/dizby/server/basic.rb', line 96 def shutdown_pipe @shutdown_pipe end |
#stream (private)
Returns the value of attribute stream.
96 97 98 |
# File 'lib/dizby/server/basic.rb', line 96 def stream @stream end |
#uri (readonly)
Returns the value of attribute uri.
77 78 79 |
# File 'lib/dizby/server/basic.rb', line 77 def uri @uri end |
Instance Method Details
#accept
46 47 48 49 50 51 |
# File 'lib/dizby/server/basic.rb', line 46 def accept readables, = IO.select([stream, shutdown_pipe.read]) fail LocalServerShutdown if readables.include? shutdown_pipe.read log.debug('Accepting connection') stream.accept end |
#add_uri_alias(uri)
80 81 82 83 84 85 86 |
# File 'lib/dizby/server/basic.rb', line 80 def add_uri_alias(uri) log.debug("Adding uri alias: #{uri}") exported_uri.synchronize do exported_uri << uri unless exported_uri.include?(uri) end end |
#alive? ⇒ Boolean
53 54 55 56 57 58 59 |
# File 'lib/dizby/server/basic.rb', line 53 def alive? return false unless stream return true if stream.ready? shutdown false end |
#close
31 32 33 34 35 36 37 38 39 |
# File 'lib/dizby/server/basic.rb', line 31 def close log.debug('Closing') if stream stream.close self.stream = nil end close_shutdown_pipe end |
#close_shutdown_pipe (private)
98 99 100 101 102 103 104 105 |
# File 'lib/dizby/server/basic.rb', line 98 def close_shutdown_pipe return nil unless shutdown_pipe log.debug('Closing shutdown pipe') shutdown_pipe.close_read shutdown_pipe.close_write self.shutdown_pipe = nil end |
#here?(uri) ⇒ Boolean
88 89 90 |
# File 'lib/dizby/server/basic.rb', line 88 def here?(uri) exported_uri.synchronize { exported_uri.include?(uri) } end |
#shutdown
41 42 43 44 |
# File 'lib/dizby/server/basic.rb', line 41 def shutdown log.debug('Shutting down') shutdown_pipe.close_write if shutdown_pipe end |
#to_id(obj)
72 73 74 75 |
# File 'lib/dizby/server/basic.rb', line 72 def to_id(obj) return nil if obj.__id__ == front.__id__ idconv.to_id(obj) end |
#to_obj(ref)
61 62 63 64 65 66 67 68 69 70 |
# File 'lib/dizby/server/basic.rb', line 61 def to_obj(ref) case ref when nil front when QueryRef front[ref.to_s] else idconv.to_obj(ref) end end |