Module: DRb

Defined in:
lib/drb/drb.rb,
lib/drb/gw.rb,
lib/drb/eq.rb,
lib/drb/ssl.rb,
lib/drb/unix.rb,
lib/drb/extserv.rb,
lib/drb/observer.rb,
lib/drb/extservm.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

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#primary_serverObject

The primary local dRuby server.

This is the server created by the #start_service call.



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

def primary_server
  @primary_server
end

Instance 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.



1684
1685
1686
1687
1688
# File 'lib/drb/drb.rb', line 1684

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:



1648
1649
1650
1651
1652
1653
# File 'lib/drb/drb.rb', line 1648

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



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

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.



1695
1696
1697
# File 'lib/drb/drb.rb', line 1695

def front
  current_server.front
end

#here?(uri) ⇒ Boolean

Is uri the URI for the current local server?

Returns:

  • (Boolean)


1675
1676
1677
# File 'lib/drb/drb.rb', line 1675

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

#install_acl(acl) ⇒ Object

Set the default acl.

See DRb::DRbServer.default_acl.



1737
1738
1739
# File 'lib/drb/drb.rb', line 1737

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.



1729
1730
1731
# File 'lib/drb/drb.rb', line 1729

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

#regist_server(server) ⇒ Object



1743
1744
1745
1746
1747
1748
# File 'lib/drb/drb.rb', line 1743

def regist_server(server)
  @server[server.uri] = server
  Thread.exclusive do
    @primary_server = server unless @primary_server
  end
end

#remove_server(server) ⇒ Object



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

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.



1627
1628
1629
# File 'lib/drb/drb.rb', line 1627

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.



1660
1661
1662
1663
# File 'lib/drb/drb.rb', line 1660

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.



1721
1722
1723
# File 'lib/drb/drb.rb', line 1721

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.



1712
1713
1714
# File 'lib/drb/drb.rb', line 1712

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.



1704
1705
1706
# File 'lib/drb/drb.rb', line 1704

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.



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

def uri
  current_server.uri
end