# File lib/daemon_kit/ruote_workitem.rb, line 39
      def process( transport, workitem )
        # keep it singleton
        @instance ||= new

        work = parse( workitem )

        # Invalid JSON... mmm
        return if work.nil?

        DaemonKit.logger.warn "Processing workitem that has timed out!" if work.timed_out?

        target, method = parse_command( work )

        if target.nil? || method.nil?
          msg = "Missing target/method in command parameter, or command parameter missing"
          DaemonKit.logger.error( msg )
          work["daemon_kit"] = { "error" => msg }

        elsif target.public_methods.include?( method )
          target.perform( method, work )

        else
          msg = "Workitem cannot be processes: #{method} not exposed by #{target.inspect}"
          DaemonKit.logger.error( msg )
          work["daemon_kit"] = { "error" => msg }
        end

        reply_to_engine( transport, work )
      end