Class: JIJI::Plugin::SingleClickClient

Inherits:
Object
  • Object
show all
Includes:
HTTPClient::Timeout
Defined in:
lib/jiji/plugin/embedded/single_click_client.rb

Overview

クリック証券へのアクセスを集約するためのサービス

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(conf, logger) ⇒ SingleClickClient

Returns a new instance of SingleClickClient.



30
31
32
33
34
# File 'lib/jiji/plugin/embedded/single_click_client.rb', line 30

def initialize( conf, logger )
  @conf = conf
  @logger = logger
  @mutex = Mutex.new
end

Instance Attribute Details

#confObject

Returns the value of attribute conf.



75
76
77
# File 'lib/jiji/plugin/embedded/single_click_client.rb', line 75

def conf
  @conf
end

#loggerObject

Returns the value of attribute logger.



76
77
78
# File 'lib/jiji/plugin/embedded/single_click_client.rb', line 76

def logger
  @logger
end

Instance Method Details

#closeObject

サービスを破棄する。 不要になった場合、必ず実行すること。



71
72
73
74
# File 'lib/jiji/plugin/embedded/single_click_client.rb', line 71

def close
  @session.close if @session
  @logger.info "close single click client."
end

#request(&block) ⇒ Object

リクエストを送付する。 ブロックの第1引数としてセッションが渡される。



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
# File 'lib/jiji/plugin/embedded/single_click_client.rb', line 38

def request( &block )
  @mutex.synchronize {
    begin
      @session = create_session unless @session
      @session.request {|fx|
        timeout( conf[:timeout] || 60 ) {
          yield fx
        }
      }
    rescue Exception
      begin
        # セッション切れの場合、再作成して再実行してみる。
        # それでもエラーになったらあきらめてエラーを返す。
        if $!.to_s =~ /Out Of Session\./
          @logger.info "restart single click client."
          @session.close
          @session = create_session
          @session.request( &block )
        else
          raise $!
        end
      rescue Exception
        # エラーの場合、次回のリクエストもセッションを再作成する
        @session.close if @session
        @session = nil
        raise $!
      end
    end
  }
end