Included Modules

Class/Module Index [+]

Quicksearch

TaskJuggler::DaemonConnectorMixin

Public Instance Methods

connectDaemon() click to toggle source
# File lib/taskjuggler/daemon/DaemonConnector.rb, line 22
def connectDaemon
  unless @authKey
    error('missing_auth_key', You must set an authentication key in the configuration file. Create a filenamed .taskjugglerrc or taskjuggler.rc that contains at least the followinglines. Replace 'your_secret_key' with some random character sequence._global:  authKey: your_secret_key
         )
  end

  uri = "druby://#{@host}:#{@port}"
  if @port == 0
    # If the @port is configured to 0, we need to read the URI to connect
    # to the server from the .tj3d.uri file that has been generated by the
    # server.
    begin
      uri = File.read(@uriFile).chomp
    rescue
      error('tjc_port_0',
            'The server port is configured to be 0, but no ' +
            ".tj3d.uri file can be found: #{$!}")
    end
  end
  debug('', "DRb URI determined as #{uri}")

  # We try to play it safe here. The client also starts a DRb server, so
  # we need to make sure it's constricted to localhost only. We require
  # the DRb server for the standard IO redirection to work.
  $SAFE = 1 unless @unsafeMode
  DRb.install_acl(ACL.new(] deny all
                              allow 127.0.0.1 ]))
  DRb.start_service('druby://127.0.0.1:0')
  debug('', 'DRb service started')

  broker = nil
  begin
    # Get the ProjectBroker object from the tj3d.
    broker = DRbObject.new_with_uri(uri)
    # Client and server should always come from the same Gem. Since we
    # restict communication to localhost, that's probably not a problem.
    if (check = broker.apiVersion(@authKey, 1)) < 0
      error('tjc_too_old',
            'This client is too old for the server. Please ' +
            'upgrade to a more recent version of the software.')
    elsif check == 0
      error('tjc_auth_fail',
            'Authentication failed. Please check your authentication ' +
            'key to match the server key.')
    end
    debug('', "Connection with report broker on #{uri} established")
  rescue => e
    # If we ended up here due to a previously reported TjRuntimeError, we
    # just pass it through.
    if e.is_a?(TjRuntimeError)
      raise TjRuntimeError, $!
    end
    error('tjc_srv_not_responding',
          "TaskJuggler server (tj3d) on URI '#{uri}' is not " +
          "responding:\n#{$!}")
  end

  broker
end
disconnectDaemon() click to toggle source
# File lib/taskjuggler/daemon/DaemonConnector.rb, line 89
def disconnectDaemon
  DRb.stop_service
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.