Class: Pione::Relay::ReceiverSocket
- Inherits:
-
DRb::DRbTCPSocket
- Object
- DRb::DRbTCPSocket
- Pione::Relay::ReceiverSocket
- Defined in:
- lib/pione/relay/receiver-socket.rb
Defined Under Namespace
Classes: ReceiverSocketError
Constant Summary collapse
- @@table =
{}
Class Method Summary collapse
-
.open(uri, config) ⇒ Object
Raises an error.
-
.open_server(uri, config) ⇒ Object
private
Creates a fake connection.
-
.parse_uri(uri) ⇒ Object
Parses special URI for reverse scheme.
- .table ⇒ Object
Instance Method Summary collapse
-
#accept ⇒ Object
Raises an error because the socket cannot accept.
- #alive? ⇒ Boolean
- #close ⇒ Object
- #set_socket(*args) ⇒ Object
Class Method Details
.open(uri, config) ⇒ Object
Raises an error. You cannnot open receiver socket on caller side.
26 27 28 |
# File 'lib/pione/relay/receiver-socket.rb', line 26 def self.open(uri, config) raise DRb::DRbBadScheme.new(uri) end |
.open_server(uri, config) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Creates a fake connection.
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/pione/relay/receiver-socket.rb', line 32 def self.open_server(uri, config) # reverse socket needs URI always raise ArgumentError.new("You should specify receiver URI.") unless uri # get config host, port, option = parse_uri(uri) # retrieve socket by rev_id key = "%s:%s" % [host, port] unless @@table.has_key?(key) raise ReceiverSocketError.new("No socket for %s." % uri) end socket = @@table[key] # create an instance with relay socket return self.new(uri, socket, config) end |
.parse_uri(uri) ⇒ Object
Parses special URI for reverse scheme.
13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/pione/relay/receiver-socket.rb', line 13 def self.parse_uri(uri) if uri =~ /^receiver:\/\/(.*?):(\d+)(\?(.*))?$/ host = $1 port = $2.to_i option = $4 [host, port, option] else raise(DRb::DRbBadScheme, uri) unless uri =~ /^receiver:/ raise(DRb::DRbBadURI, 'can\'t parse uri:' + uri) end end |
.table ⇒ Object
8 9 10 |
# File 'lib/pione/relay/receiver-socket.rb', line 8 def self.table @@table end |
Instance Method Details
#accept ⇒ Object
Raises an error because the socket cannot accept.
51 52 53 |
# File 'lib/pione/relay/receiver-socket.rb', line 51 def accept raise ReceiverSocketError.new("ReceiverSocket cannnot accept connections.") end |
#alive? ⇒ Boolean
58 59 60 |
# File 'lib/pione/relay/receiver-socket.rb', line 58 def alive? true end |
#close ⇒ Object
55 56 |
# File 'lib/pione/relay/receiver-socket.rb', line 55 def close end |
#set_socket(*args) ⇒ Object
62 63 |
# File 'lib/pione/relay/receiver-socket.rb', line 62 def set_socket(*args) end |