Sha256: fca93b4ade05108c739e8b4ea54d69b48932c2b5cee1598b4856fc6f00f97526

Contents?: true

Size: 1.5 KB

Versions: 21

Compression:

Stored size: 1.5 KB

Contents

# frozen_string_literal: true
module Dynflow
  module Connectors
    class Abstract
      include Algebrick::TypeCheck
      include Algebrick::Matching

      def start_listening(world)
        raise NotImplementedError
      end

      def stop_receiving_new_work(_, timeout = nil)
        raise NotImplementedError
      end

      def stop_listening(world, timeout = nil)
        raise NotImplementedError
      end

      def terminate
        raise NotImplementedError
      end

      def send(envelope)
        raise NotImplementedError
      end

      def prune_undeliverable_envelopes(world)
        raise NotImplementedError
      end

      # we need to pass the world, as the connector can be shared
      # between words: we need to know the one to send the message to
      def receive(world, envelope)
        Type! envelope, Dispatcher::Envelope
        Telemetry.with_instance { |t| t.increment_counter(:dynflow_connector_envelopes, 1, :world => world.id, :direction => 'incoming') }
        match(envelope.message,
              (on Dispatcher::Ping do
                 response_envelope = envelope.build_response_envelope(Dispatcher::Pong, world)
                 send(response_envelope)
               end),
              (on Dispatcher::Request do
                 world.executor_dispatcher.tell([:handle_request, envelope])
               end),
              (on Dispatcher::Response do
                 world.client_dispatcher.tell([:dispatch_response, envelope])
               end))
      end
    end
  end
end

Version data entries

21 entries across 21 versions & 1 rubygems

Version Path
dynflow-1.8.2 lib/dynflow/connectors/abstract.rb
dynflow-1.8.1 lib/dynflow/connectors/abstract.rb
dynflow-1.8.0 lib/dynflow/connectors/abstract.rb
dynflow-1.7.0 lib/dynflow/connectors/abstract.rb
dynflow-1.6.11 lib/dynflow/connectors/abstract.rb
dynflow-1.6.10 lib/dynflow/connectors/abstract.rb
dynflow-1.6.8 lib/dynflow/connectors/abstract.rb
dynflow-1.6.7 lib/dynflow/connectors/abstract.rb
dynflow-1.6.6 lib/dynflow/connectors/abstract.rb
dynflow-1.6.5 lib/dynflow/connectors/abstract.rb
dynflow-1.6.4 lib/dynflow/connectors/abstract.rb
dynflow-1.6.3 lib/dynflow/connectors/abstract.rb
dynflow-1.6.2 lib/dynflow/connectors/abstract.rb
dynflow-1.6.1 lib/dynflow/connectors/abstract.rb
dynflow-1.4.9 lib/dynflow/connectors/abstract.rb
dynflow-1.4.8 lib/dynflow/connectors/abstract.rb
dynflow-1.5.0 lib/dynflow/connectors/abstract.rb
dynflow-1.4.7 lib/dynflow/connectors/abstract.rb
dynflow-1.4.6 lib/dynflow/connectors/abstract.rb
dynflow-1.4.5 lib/dynflow/connectors/abstract.rb