Module: DRb

Defined in:
lib/drb/drb.rb,
lib/drb/eq.rb,
lib/drb/gw.rb,
lib/drb/ssl.rb,
lib/drb/unix.rb,
lib/drb/extserv.rb,
lib/drb/extservm.rb,
lib/drb/observer.rb,
lib/drb/timeridconv.rb,
lib/drb/invokemethod.rb

Overview

for ruby-1.8.0

Defined Under Namespace

Modules: DRbObservable, DRbProtocol, DRbUndumped Classes: DRbArray, DRbBadScheme, DRbBadURI, DRbConn, DRbConnError, DRbError, DRbIdConv, DRbMessage, DRbObject, DRbRemoteError, DRbSSLSocket, DRbServer, DRbServerNotFound, DRbTCPSocket, DRbUNIXSocket, DRbURIOption, DRbUnknown, DRbUnknownError, ExtServ, ExtServManager, GW, GWIdConv, TimerIdConv

Class Method Summary collapse

Class Method Details

.configObject

Get the configuration of the current server.

If there is no current server, this returns the default configuration. See #current_server and DRbServer::make_config.



1697
1698
1699
1700
1701
# File 'lib/drb/drb.rb', line 1697

def config
  current_server.config
rescue
  DRbServer.make_config
end

.current_serverObject

Get the ‘current’ server.

In the context of execution taking place within the main thread of a dRuby server (typically, as a result of a remote call on the server or one of its objects), the current server is that server. Otherwise, the current server is the primary server.

If the above rule fails to find a server, a DRbServerNotFound error is raised.

Raises:



1655
1656
1657
1658
1659
1660
# File 'lib/drb/drb.rb', line 1655

def current_server
  drb = Thread.current['DRb'] 
  server = (drb && drb['server']) ? drb['server'] : @primary_server 
  raise DRbServerNotFound unless server
  return server
end

.fetch_server(uri) ⇒ Object



1775
1776
1777
# File 'lib/drb/drb.rb', line 1775

def fetch_server(uri)
  @server[uri]
end

.frontObject

Get the front object of the current server.

This raises a DRbServerNotFound error if there is no current server. See #current_server.



1708
1709
1710
# File 'lib/drb/drb.rb', line 1708

def front
  current_server.front
end

.here?(uri) ⇒ Boolean

Is uri the URI for the current local server?

Returns:

  • (Boolean)


1688
1689
1690
# File 'lib/drb/drb.rb', line 1688

def here?(uri)
  (current_server.uri rescue nil) == uri
end

.install_acl(acl) ⇒ Object

Set the default acl.

See DRb::DRbServer.default_acl.



1750
1751
1752
# File 'lib/drb/drb.rb', line 1750

def install_acl(acl)
  DRbServer.default_acl(acl)
end

.install_id_conv(idconv) ⇒ Object

Set the default id conv object.

See DRbServer#default_id_conv.



1742
1743
1744
# File 'lib/drb/drb.rb', line 1742

def install_id_conv(idconv)
  DRbServer.default_id_conv(idconv)
end

.mutexObject



1756
1757
1758
# File 'lib/drb/drb.rb', line 1756

def mutex
  @mutex
end

.primary_serverObject

The primary local dRuby server.

This is the server created by the #start_service call.



1642
1643
1644
# File 'lib/drb/drb.rb', line 1642

def primary_server
  @primary_server
end

.primary_server=(value) ⇒ Object

The primary local dRuby server.

This is the server created by the #start_service call.



1642
1643
1644
# File 'lib/drb/drb.rb', line 1642

def primary_server=(value)
  @primary_server = value
end

.regist_server(server) ⇒ Object



1762
1763
1764
1765
1766
1767
# File 'lib/drb/drb.rb', line 1762

def regist_server(server)
  @server[server.uri] = server
  mutex.synchronize do
    @primary_server = server unless @primary_server
  end
end

.remove_server(server) ⇒ Object



1770
1771
1772
# File 'lib/drb/drb.rb', line 1770

def remove_server(server)
  @server.delete(server.uri)
end

.start_service(uri = nil, front = nil, config = nil) ⇒ Object

Start a dRuby server locally.

The new dRuby server will become the primary server, even if another server is currently the primary server.

uri is the URI for the server to bind to. If nil, the server will bind to random port on the default local host name and use the default dRuby protocol.

front is the server’s front object. This may be nil.

config is the configuration for the new server. This may be nil.

See DRbServer::new.



1634
1635
1636
# File 'lib/drb/drb.rb', line 1634

def start_service(uri=nil, front=nil, config=nil)
  @primary_server = DRbServer.new(uri, front, config)
end

.stop_serviceObject

Stop the local dRuby server.

This operates on the primary server. If there is no primary server currently running, it is a noop.



1667
1668
1669
1670
# File 'lib/drb/drb.rb', line 1667

def stop_service
  @primary_server.stop_service if @primary_server
  @primary_server = nil
end

.threadObject

Get the thread of the primary server.

This returns nil if there is no primary server. See #primary_server.



1734
1735
1736
# File 'lib/drb/drb.rb', line 1734

def thread
  @primary_server ? @primary_server.thread : nil
end

.to_id(obj) ⇒ Object

Get a reference id for an object using the current server.

This raises a DRbServerNotFound error if there is no current server. See #current_server.



1725
1726
1727
# File 'lib/drb/drb.rb', line 1725

def to_id(obj)
  current_server.to_id(obj)
end

.to_obj(ref) ⇒ Object

Convert a reference into an object using the current server.

This raises a DRbServerNotFound error if there is no current server. See #current_server.



1717
1718
1719
# File 'lib/drb/drb.rb', line 1717

def to_obj(ref)
  current_server.to_obj(ref)
end

.uriObject

Get the URI defining the local dRuby space.

This is the URI of the current server. See #current_server.



1676
1677
1678
1679
1680
1681
1682
1683
1684
# File 'lib/drb/drb.rb', line 1676

def uri
  drb = Thread.current['DRb']
  client = (drb && drb['client'])
  if client
    uri = client.uri
    return uri if uri
  end
  current_server.uri
end