Class: JIJI::ProcessInfo

Inherits:
Object
  • Object
show all
Defined in:
lib/jiji/process.rb

Overview

プロセス情報

Constant Summary collapse

PROPERTY_FILE =
"props.yaml"

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(process_id, process_dir) ⇒ ProcessInfo

コンストラクタ



148
149
150
151
152
153
154
# File 'lib/jiji/process.rb', line 148

def initialize( process_id, process_dir )
  @process_id = process_id
  @process_dir = process_dir
  FileUtils.mkdir_p dir
  @progress = 0
  @props = {}
end

Instance Attribute Details

#process_idObject

ID



215
216
217
# File 'lib/jiji/process.rb', line 215

def process_id
  @process_id
end

#progressObject

進捗状況



219
220
221
# File 'lib/jiji/process.rb', line 219

def progress
  @progress
end

#propsObject

プロパティ



217
218
219
# File 'lib/jiji/process.rb', line 217

def props
  @props
end

Instance Method Details

#[](k) ⇒ Object



186
187
188
# File 'lib/jiji/process.rb', line 186

def [](k)
  @props[k]
end

#[]=(k, v) ⇒ Object



182
183
184
185
# File 'lib/jiji/process.rb', line 182

def []=(k,v)
  @props[k] = v
  save
end

#data_exist?Boolean

データが存在するか評価する

Returns:

  • (Boolean)


157
158
159
# File 'lib/jiji/process.rb', line 157

def data_exist?
  File.exist? prop_file
end

#loadObject

設定をロードする



172
173
174
175
176
177
178
179
180
# File 'lib/jiji/process.rb', line 172

def load
  # 保存したファイルがあれば、ファイルから設定値を読み込む
  file = prop_file
  lock {
    if ( File.exist? file )
      @props = YAML.load_file file
    end
  }
end

#load_agents(agent_manager, agent_registry, logger, ignore_error = false) ⇒ Object

設定情報を元にエージェントを作成し、agent_managerに登録する

agent_manager

エージェントマネージャ

agent_registry

エージェントレジストリ

logger

エージェントのロードでエラーになった場合のログの出力先

ignore_error

ロードエラーを例外として通知するかどうか。通知しない場合true



199
200
201
202
203
204
205
206
207
208
209
210
211
212
# File 'lib/jiji/process.rb', line 199

def load_agents( agent_manager, agent_registry, logger, ignore_error=false )
  agent_manager.clear
  return if !@props || !@props.key?("agents")
  @props["agents"].each {|v|
    begin
      agent = agent_registry.create( v["class"], v["properties"] )
      agent_manager.add( v["id"], agent, v["name"] )
    rescue Exception
      logger.warn " failed to create agent. name=#{v["name"]} id=#{v["id"]}"
      logger.warn $!
      raise $! unless ignore_error
    end
  }
end

#saveObject

設定を保存する



162
163
164
165
166
167
168
169
# File 'lib/jiji/process.rb', line 162

def save
  file = prop_file
  lock {
    File.open( file, "w" ) { |f|
      f.write( YAML.dump(@props) )
    }
  }
end