cirrocumulus 0.1.4 → 0.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/VERSION +1 -1
- data/cirrocumulus.gemspec +2 -2
- data/lib/cirrocumulus/engine.rb +14 -6
- data/lib/cirrocumulus/master_agent.rb +5 -1
- data/lib/cirrocumulus/ontology.rb +28 -2
- metadata +5 -5
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.2.3
|
data/cirrocumulus.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{cirrocumulus}
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.2.3"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Anton Kosyakin"]
|
12
|
-
s.date = %q{2011-09-
|
12
|
+
s.date = %q{2011-09-16}
|
13
13
|
s.description = %q{Engine for building your own agents, providing you base functionality for loading ontologies, communicating with other agents and parsing FIPA-ACL messages}
|
14
14
|
s.email = %q{deil@mneko.net}
|
15
15
|
s.extra_rdoc_files = [
|
data/lib/cirrocumulus/engine.rb
CHANGED
@@ -45,13 +45,10 @@ class Cirrocumulus
|
|
45
45
|
|
46
46
|
def initialize(suffix, generate_jid = true)
|
47
47
|
Log4r::Logger['cirrocumulus'].info 'platform: ' + Cirrocumulus::platform
|
48
|
-
|
49
|
-
|
50
|
-
@jid = generate_jid ? "#{hostname}-#{suffix}" : suffix
|
51
|
-
Log4r::Logger['cirrocumulus'].info "logging as " + @jid
|
52
|
-
connect()
|
48
|
+
@suffix = suffix
|
49
|
+
@generate_jid = generate_jid
|
53
50
|
end
|
54
|
-
|
51
|
+
|
55
52
|
def send(message)
|
56
53
|
msg = "<fipa-message ontology=\"#{message.ontology}\""
|
57
54
|
msg += " receiver=\"#{message.receiver}\"" if message.receiver
|
@@ -85,6 +82,17 @@ class Cirrocumulus
|
|
85
82
|
end
|
86
83
|
|
87
84
|
def run(agent, kb, sniff = false)
|
85
|
+
suffix = agent.default_ontology ? agent.default_ontology.gsub('cirrocumulus-', '') : @suffix
|
86
|
+
@jid = if @generate_jid
|
87
|
+
_, hostname = systemu 'hostname'
|
88
|
+
hostname.strip!
|
89
|
+
"%s-%s" % [hostname, suffix]
|
90
|
+
else
|
91
|
+
suffix
|
92
|
+
end
|
93
|
+
Log4r::Logger['cirrocumulus'].info "logging as " + @jid
|
94
|
+
connect()
|
95
|
+
|
88
96
|
Log4r::Logger['cirrocumulus'].info("entering main loop")
|
89
97
|
agent.restore_state()
|
90
98
|
|
@@ -155,6 +155,10 @@ module Agent
|
|
155
155
|
end
|
156
156
|
end
|
157
157
|
|
158
|
+
def default_ontology
|
159
|
+
self.ontologies.size == 1 ? self.ontologies.first.name : nil
|
160
|
+
end
|
161
|
+
|
158
162
|
def handles_ontology?(ontology_name)
|
159
163
|
self.ontologies.any? {|ontology| ontology.name == ontology_name}
|
160
164
|
end
|
@@ -182,7 +186,7 @@ module Agent
|
|
182
186
|
|
183
187
|
def handle_message(message, kb)
|
184
188
|
@network_map.handle_message(message, @cm)
|
185
|
-
self.ontologies.each {|ontology| ontology.
|
189
|
+
self.ontologies.each {|ontology| ontology.handle_incoming_message(message, kb) if message.ontology == ontology.name}
|
186
190
|
rescue Exception => e
|
187
191
|
Log4r::Logger['agent'].warn "failed to handle incoming message: %s" % e.to_s
|
188
192
|
puts e.backtrace.to_s
|
@@ -6,6 +6,8 @@ module Ontology
|
|
6
6
|
def initialize(name, agent)
|
7
7
|
@name = name
|
8
8
|
@agent = agent
|
9
|
+
@sagas = []
|
10
|
+
@saga_idx = 0
|
9
11
|
end
|
10
12
|
|
11
13
|
def restore_state()
|
@@ -13,14 +15,38 @@ module Ontology
|
|
13
15
|
end
|
14
16
|
|
15
17
|
def tick()
|
18
|
+
@sagas.each do |saga|
|
19
|
+
next if saga.is_finished?
|
20
|
+
saga.timeout -= 1 if saga.timeout > 0
|
21
|
+
saga.handle(nil) if saga.timeout == 0
|
22
|
+
end
|
23
|
+
|
24
|
+
handle_tick()
|
16
25
|
end
|
17
26
|
|
18
|
-
def
|
19
|
-
|
27
|
+
def handle_incoming_message(message, kb)
|
28
|
+
was_processed = false
|
29
|
+
@sagas.each do |saga|
|
30
|
+
next if saga.is_finished?
|
31
|
+
|
32
|
+
if saga.id == message.in_reply_to
|
33
|
+
was_processed = true
|
34
|
+
saga.handle(message)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
handle_message(message, kb) if !was_processed
|
20
39
|
end
|
21
40
|
|
22
41
|
protected
|
23
42
|
|
43
|
+
def handle_tick()
|
44
|
+
end
|
45
|
+
|
46
|
+
def handle_message(message, kb)
|
47
|
+
puts "call to dummy Ontology::Base.handle_message()"
|
48
|
+
end
|
49
|
+
|
24
50
|
def logger
|
25
51
|
Log4r::Logger['agent']
|
26
52
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cirrocumulus
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 17
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version: 0.
|
8
|
+
- 2
|
9
|
+
- 3
|
10
|
+
version: 0.2.3
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Anton Kosyakin
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-09-
|
18
|
+
date: 2011-09-16 00:00:00 +04:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|