Sha256: a7b28eb05a6a342f5b03dcf9b0db187391e91332b611e1bbf63231256b5713fe
Contents?: true
Size: 1.87 KB
Versions: 9
Compression:
Stored size: 1.87 KB
Contents
# frozen_string_literal: true module Dynflow module Dispatcher Request = Algebrick.type do Event = type do fields! execution_plan_id: String, step_id: Integer, event: Object, time: type { variants Time, NilClass } end Execution = type do fields! execution_plan_id: String end Ping = type do fields! receiver_id: String, use_cache: type { variants TrueClass, FalseClass } end Status = type do fields! receiver_id: String, execution_plan_id: type { variants String, NilClass } end variants Event, Execution, Ping, Status end Response = Algebrick.type do variants Accepted = atom, Failed = type { fields! error: String }, Done = atom, Pong = atom, ExecutionStatus = type { fields! execution_status: Hash } end Envelope = Algebrick.type do fields! request_id: String, sender_id: String, receiver_id: type { variants String, AnyExecutor = atom, UnknownWorld = atom }, message: type { variants Request, Response } end module Envelope def build_response_envelope(response_message, sender) Envelope[self.request_id, sender.id, self.sender_id, response_message] end end module Event def to_hash super.update event: Base64.strict_encode64(Marshal.dump(event)) end def self.product_from_hash(hash) super(hash.merge 'event' => Marshal.load(Base64.strict_decode64(hash.fetch('event')))) end end end end require 'dynflow/dispatcher/abstract' require 'dynflow/dispatcher/client_dispatcher' require 'dynflow/dispatcher/executor_dispatcher'
Version data entries
9 entries across 9 versions & 1 rubygems