lib/ruote/beanstalk/participant.rb in ruote-beanstalk-2.1.10 vs lib/ruote/beanstalk/participant.rb in ruote-beanstalk-2.1.11

- old
+ new

@@ -1,147 +1,3 @@ -#-- -# Copyright (c) 2005-2010, John Mettraux, jmettraux@gmail.com -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. -# -# Made in Japan. -#++ -require 'beanstalk-client' - -#require 'ruote/part/local_participant' - - -module Ruote -module Beanstalk - - # - # This participant emits workitems towards a beanstalk queue. - # - # engine.register_participant( - # :heavy_labour, - # :reply_by_default => true, :beanstalk => '127.0.0.1:11300') - # - # - # == workitem format - # - # Workitems are encoded in the format - # - # [ 'workitem', workitem.to_h ] - # - # and then serialized as JSON strings. - # - # - # == cancel items - # - # Like workitems, but the format is - # - # [ 'cancelitem', fei.to_h, flavour.to_s ] - # - # where fei is the FlowExpressionId of the expression getting cancelled - # (and whose workitems are to be retired) and flavour is either 'cancel' or - # 'kill'. - # - # - # == extending this participant - # - # Extend and overwrite encode_workitem and encode_cancelitem or - # simply re-open the class and change those methods. - # - # - # == :beanstalk - # - # Indicates which beanstalk to talk to - # - # engine.register_participant( - # 'alice' - # Ruote::Beanstalk::BsParticipant, - # 'beanstalk' => '127.0.0.1:11300') - # - # - # == :tube - # - # Most of the time, you want the workitems (or the cancelitems) to be - # emitted over/in a specific tube - # - # engine.register_participant( - # 'alice' - # Ruote::Beanstalk::BsParticipant, - # 'beanstalk' => '127.0.0.1:11300', - # 'tube' => 'ruote-workitems') - # - # - # == :reply_by_default - # - # If the participant is configured with 'reply_by_default' => true, the - # participant will dispatch the workitem over to Beanstalk and then - # immediately reply to its ruote engine (letting the flow resume). - # - # engine.register_participant( - # 'alice' - # Ruote::Beanstalk::BsParticipant, - # 'beanstalk' => '127.0.0.1:11300', - # 'reply_by_default' => true) - # - class BsParticipant - - include Ruote::LocalParticipant - - def initialize (opts) - - @opts = opts - end - - def consume (workitem) - - connection.put(encode_workitem(workitem)) - - reply(workitem) if @opts['reply_by_default'] - end - - def cancel (fei, flavour) - - connection.put(encode_cancelitem(fei, flavour)) - end - - def encode_workitem (workitem) - - Rufus::Json.encode([ 'workitem', workitem.to_h ]) - end - - def encode_cancelitem (fei, flavour) - - Rufus::Json.encode([ 'cancelitem', fei.to_h, flavour.to_s ]) - end - - protected - - def connection - - con = ::Beanstalk::Connection.new(@opts['beanstalk']) - - if tube = @opts['tube'] - con.use(tube) - end - - con - end - end -end -end +require 'ruote/beanstalk/participant_proxy'