Class: TorigoyaKit::Session

Inherits:
Object
  • Object
show all
Defined in:
lib/torigoya_kit/session.rb

Constant Summary collapse

Version =
20150715

Instance Method Summary collapse

Constructor Details

#initialize(host, port) ⇒ Session

Returns a new instance of Session.



17
18
19
20
21
22
23
24
# File 'lib/torigoya_kit/session.rb', line 17

def initialize(host, port)
  # 5 sec
  timeout(5) do
    @socket = Socket.tcp(host, port)
  end

  @buffer = ""
end

Instance Method Details

#exec_ticket(ticket) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# File 'lib/torigoya_kit/session.rb', line 28

def exec_ticket(ticket)
  result = TicketResult.new
  exec_ticket_with_stream(ticket) do |res|
    if res.is_a?(StreamOutputResult) || res.is_a?(StreamExecutedResult)
      case res.mode
      when ResultMode::CompileMode
        result.compile = TicketResultUnit.new if result.compile.nil?
      when ResultMode::LinkMode
        result.link = TicketResultUnit.new if result.link.nil?
      when ResultMode::RunMode
        result.run[res.index] = TicketResultUnit.new if result.run[res.index].nil?
      end

      if res.is_a?(StreamOutputResult)
        case res.output.fd
        when StreamOutput::StdoutFd
          case res.mode
          when ResultMode::CompileMode
            result.compile.out << res.output.buffer
          when ResultMode::LinkMode
            result.link.out << res.output.buffer
          when ResultMode::RunMode
            result.run[res.index].out << res.output.buffer
          end
        when StreamOutput::StderrFd
          case res.mode
          when ResultMode::CompileMode
            result.compile.err << res.output.buffer
          when ResultMode::LinkMode
            result.link.err << res.output.buffer
          when ResultMode::RunMode
            result.run[res.index].err << res.output.buffer
          end
        end

      elsif res.is_a?(StreamExecutedResult)
        case res.mode
        when ResultMode::CompileMode
          result.compile.result = res.result
        when ResultMode::LinkMode
          result.link.result = res.result
        when ResultMode::RunMode
          result.run[res.index].result = res.result
        end
      end

    elsif res.is_a?(StreamSystemError)
      raise res.message

    elsif res.is_a?(StreamExit)
      break

    else
      raise "Unexpected error: unknown message was recieved (#{res.class})"

    end
  end
  return result
end

#exec_ticket_with_stream(ticket, &block) ⇒ Object



90
91
92
93
94
# File 'lib/torigoya_kit/session.rb', line 90

def exec_ticket_with_stream(ticket, &block)
  send(Protocol::MessageKindTicketRequest, ticket)

  recv_stream(&block)
end

#update_packagesObject



98
99
100
101
102
103
104
105
106
107
108
109
110
# File 'lib/torigoya_kit/session.rb', line 98

def update_packages()
  send(Protocol::MessageKindUpdateRepositoryRequest, nil)

  recv_stream() do |res|
    if res.is_a?(StreamSystemResult)
      return res.status
    elsif res.is_a?(StreamSystemError)
      raise res.message
    else
      raise "Unexpected error: unknown message was recieved (#{res.class})"
    end
  end
end