Class: JIJI::Service::AgentService

Inherits:
Object
  • Object
show all
Includes:
AgentUtil
Defined in:
lib/jiji/service/agent_service.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from AgentUtil

#safe

Instance Attribute Details

#agent_registryObject

Returns the value of attribute agent_registry.



117
118
119
# File 'lib/jiji/service/agent_service.rb', line 117

def agent_registry
  @agent_registry
end

#process_managerObject

Returns the value of attribute process_manager.



118
119
120
# File 'lib/jiji/service/agent_service.rb', line 118

def process_manager
  @process_manager
end

Instance Method Details

#add_agent(process_id, name, class_name, properties) ⇒ Object

プロセスにエージェントを追加する



80
81
82
83
84
85
# File 'lib/jiji/service/agent_service.rb', line 80

def add_agent( process_id, name, class_name, properties )
  p = process_manager.get( process_id )
  agent = agent_registry.create( class_name, properties )
  p.agent_manager.add( name, agent )
  :success
end

#delete_files(file_names, type = :agent) ⇒ Object

ファイルを削除する



49
50
51
52
53
54
55
56
57
# File 'lib/jiji/service/agent_service.rb', line 49

def delete_files( file_names, type=:agent )
  file_names.each {|fn|
    check_filename( fn )
  }
  file_names.each {|fn|
    @agent_registry.remove_file( fn, type.to_sym )
  }
  :success
end

#get_file(file_name, type = :agent) ⇒ Object

ファイルの内容を取得する



22
23
24
25
# File 'lib/jiji/service/agent_service.rb', line 22

def get_file( file_name, type=:agent )
  check_filename( file_name )
  @agent_registry.get_file( file_name, type.to_sym )
end

#list_agent(process_id) ⇒ Object

プロセスに登録されているエージェントの一覧を得る



61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# File 'lib/jiji/service/agent_service.rb', line 61

def list_agent( process_id )
  p = process_manager.get( process_id )
  safe(4) {
    p.agent_manager.collect.map! {|entry|
      props = entry[1].agent.properties
      {
        "name"=>entry[0],
        "properties"=>entry[1].agent.property_infos.map! {|info|
          prop = props.find() {|e| e[0] == info.id.to_s }
          { "id"=>info.id.to_s, "info"=>info, "value"=> prop ? prop[1] : nil }
        },
        "description"=>entry[1].agent.description,
        "active"=>entry[1].active
      }
    }
  }
end

#list_agent_classObject

エージェントの一覧を取得する



29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/jiji/service/agent_service.rb', line 29

def list_agent_class
  @agent_registry.inject([]) {|list,name|
    next unless name =~ /([^@]+)@([^@]+)/
    list << {
      "class_name"=>$1,
      "file_name"=>$2,
      "properties"=>@agent_registry.get_property_infos(name),
      "description"=>@agent_registry.get_description(name)
    }
    list
  }
end

#list_files(type = :agent) ⇒ Object

ファイルの一覧を取得する



17
18
19
# File 'lib/jiji/service/agent_service.rb', line 17

def list_files( type=:agent )
  @agent_registry.files( type.to_sym )
end

#off(process_id, name) ⇒ Object

プロセスのエージェントを一時的に無効化する



101
102
103
104
105
# File 'lib/jiji/service/agent_service.rb', line 101

def off( process_id, name )
  p = process_manager.get( process_id )
  p.agent_manager.off( name )
  :success
end

#on(process_id, name) ⇒ Object

プロセスのエージェントの無効化を解除する



107
108
109
110
111
# File 'lib/jiji/service/agent_service.rb', line 107

def on( process_id, name )
  p = process_manager.get( process_id )
  p.agent_manager.on( name )
  :success
end

#on?(process_id, name) ⇒ Boolean

プロセスのエージェントの無効化状態を取得する

Returns:

  • (Boolean)


113
114
115
116
# File 'lib/jiji/service/agent_service.rb', line 113

def on?( process_id, name )
  p = process_manager.get( process_id )
  p.agent_manager.on?( name )
end

#put_file(file_name, body, type = :agent) ⇒ Object

ファイルを追加/更新する



43
44
45
46
# File 'lib/jiji/service/agent_service.rb', line 43

def put_file( file_name, body, type=:agent )
  check_filename( file_name )
  @agent_registry.add_file( file_name, body, type.to_sym )
end

#remove_agent(process_id, name) ⇒ Object

プロセスのエージェントを削除する



88
89
90
91
92
# File 'lib/jiji/service/agent_service.rb', line 88

def remove_agent( process_id, name )
  p = process_manager.get( process_id )
  p.agent_manager.remove( name )
  :success
end