Class: Pione::Relay::ReceiverSocket

Inherits:
DRb::DRbTCPSocket
  • Object
show all
Defined in:
lib/pione/relay/receiver-socket.rb

Defined Under Namespace

Classes: ReceiverSocketError

Constant Summary collapse

@@table =
{}

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.open(uri, config) ⇒ Object

Raises an error. You cannnot open receiver socket on caller side.

Raises:

  • (DRb::DRbBadScheme)


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.

Raises:

  • (ArgumentError)


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

.tableObject



8
9
10
# File 'lib/pione/relay/receiver-socket.rb', line 8

def self.table
  @@table
end

Instance Method Details

#acceptObject

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

Returns:

  • (Boolean)


58
59
60
# File 'lib/pione/relay/receiver-socket.rb', line 58

def alive?
  true
end

#closeObject



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