Sha256: 71f069bc0995bfaad30d7d0344eb07e8b3da6d23dcbf49c4a06e3677cedeaff0

Contents?: true

Size: 1.06 KB

Versions: 3

Compression:

Stored size: 1.06 KB

Contents

require_relative "../transport.rb"
require 'socket'

class StormyCloudTCPTransport < StormyCloudTransport
  def initialize_server
    @server = TCPServer.new @stormy_cloud.config(:port)
    @server_thread = Thread.new do
      loop do
        Thread.start(@server.accept) do |client|
          message = ''
          while (t = client.gets).strip != "ENDOFTHEMESSAGE"
            message += t
          end
          reply = handle(message)
          client.puts reply
        end
      end
    end
  end

  def kill_server
    @server_thread.kill
  end

  def raw_send_message(string)
    begin
      s = TCPSocket.new(@stormy_cloud.server, @stormy_cloud.config(:port))
      s.puts string
      s.puts "ENDOFTHEMESSAGE"
      res = s.gets
      s.close
      res
    rescue
      @errors ||= 0
      @errors += 1
      if @errors <= 5
        STDERR.puts "An error occurred while contacting the server, trying again."
        sleep 1
        raw_send_message(string)
      else
        STDERR.puts "Could not contact the server, exiting."
        exit
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
stormy-cloud-0.2.0 lib/transports/tcp.rb
stormy-cloud-0.1.3 lib/transports/tcp.rb
stormy-cloud-0.1.2 lib/transports/tcp.rb