# File lib/drb/drb.rb, line 1450
def initialize(uri=nil, front=nil, config_or_acl=nil)
if Hash === config_or_acl
config = config_or_acl.dup
else
acl = config_or_acl || @@acl
config = {
:tcp_acl => acl
}
end
@config = self.class.make_config(config)
@protocol = DRbProtocol.open_server(uri, @config)
@uri = @protocol.uri
@exported_uri = [@uri]
@front = front
@idconv = @config[:idconv]
@grp = ThreadGroup.new
@thread = run
DRb.regist_server(self)
end
Create a new DRbServer instance.
uri
is the URI
to bind to. This is normally of the form 'druby://<hostname>:<port>' where <hostname> is a hostname of the local machine. If nil, then the system's default hostname will be bound to, on a port selected by the system; these value can be retrieved from the uri
attribute. 'druby:' specifies the default dRuby transport protocol: another protocol, such as 'drbunix:', can be specified instead.
front
is the front object for the server, that is, the object to which remote method calls on the server will be passed. If nil, then the server will not accept remote method calls.
If config_or_acl
is a hash, it is the configuration to use for this server. The following options are recognised:
- :idconv
-
an id-to-object conversion object. This defaults to an instance of the class DRb::DRbIdConv
.
- :verbose
-
if true, all unsuccessful remote calls on objects in the server will be logged to $stdout. false by default.
- :tcp_acl
-
the access control list for this server. See the ACL
class from the main dRuby distribution.
- :load_limit
-
the maximum message size in bytes accepted by the server. Defaults to 25 MB (26214400).
- :argc_limit
-
the maximum number of arguments to a remote method accepted by the server. Defaults to 256.
The default values of these options can be modified on a class-wide basis by the class methods default_argc_limit, default_load_limit, default_acl, default_id_conv, and verbose=
If config_or_acl
is not a hash, but is not nil, it is assumed to be the access control list for this server. See the :tcp_acl option for more details.
If no other server is currently set as the primary server, this will become the primary server.
The server will immediately start running in its own thread.