Sha256: dba5a1f738693a68155eff1e0952bd73d093947f634d9a02dfef0c2729375395

Contents?: true

Size: 1.24 KB

Versions: 1

Compression:

Stored size: 1.24 KB

Contents

module HeadStartApp
  module Marionette

    require 'uri'
  
  
    # Master class is the ZMQ socket connection on the puppet master
    class Master
      attr_accessor :socket, :threads
  
      def initialize(socket)
  
        # Set socket
        @socket = socket
  
      end
  
      # Sends a msg to puppet node
      def send(msg)
  
        # Send and Receive
        @socket.send_string Marshal.dump(msg)

      end
      
      # Stands by for the next msg from puppet
      # Processes and returns response 
      def receive
        
        # Poll server until it is receive-able
        poller = ZMQ::Poller.new
        poller.register_readable @socket
        
        while true do
          
          poll_reply = poller.poll 500
          key = poll_reply.keys.first # fetch the first and only hash key
          
          break if poll_reply[key][:revents] == 1 # fetch revents
          
        end
        
        # Receive message
        begin
          
          response = socket.recv_string
          @response = Marshal.load(response)
          
        rescue
          
          # Catch non-marshal-able response
          @response = response

        end
        
        @response
          
      end
      
    end

  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
marionette-0.0.6 lib/marionette/master.rb