pangdudu-robots 0.1.1 → 0.2.0
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/README.rdoc +8 -2
- data/bin/robots +24 -1
- data/lib/robots_prototype.rb +45 -0
- data/lib/robots_xml.rb +26 -0
- metadata +3 -1
data/README.rdoc
CHANGED
@@ -4,6 +4,8 @@ Start your clocks boys and girls, it's weekend coding time!
|
|
4
4
|
|
5
5
|
On monday I want: working messaging, data-mapper/mysql memory agent, visualizer agent with agent introspection, slim agent that requests modules,classes over the net and evals them online.
|
6
6
|
|
7
|
+
Local messaging with dbus working, need to make service avahi discoverable.
|
8
|
+
|
7
9
|
Let's try to built a nice easy to use multiagent framework
|
8
10
|
based on all the cool stuff we can get for ruby.
|
9
11
|
|
@@ -11,11 +13,15 @@ rObOts!
|
|
11
13
|
|
12
14
|
== Installation
|
13
15
|
|
16
|
+
#on ubuntu you need stuff like this to build dbus
|
14
17
|
sudo apt-get install avahi-daemon avahi-utils libavahi-client-dev libavahi-common-dev libavahi-compat-libdnssd-dev libnss-mdns libdbus-1-dev libdbus-glib-1-dev
|
15
|
-
|
18
|
+
#essential gems
|
16
19
|
sudo gem install pangdudu-ruby-dbus --source=http://gems.github.com
|
17
20
|
sudo gem install pangdudu-rofl --source=http://gems.github.com
|
18
|
-
|
21
|
+
sudo gem install pangdudu-robots --source=http://gems.github.com
|
22
|
+
#for xml parsing and building
|
23
|
+
sudo gem install hpricot builder
|
24
|
+
|
19
25
|
== Usage
|
20
26
|
|
21
27
|
== Rule the universe!
|
data/bin/robots
CHANGED
@@ -1,2 +1,25 @@
|
|
1
1
|
#!/usr/bin/ruby
|
2
|
-
|
2
|
+
require 'rubygems'
|
3
|
+
require 'rofl' #gem install pangdudu-rofl --source=http://gems.github.com
|
4
|
+
require 'robots'
|
5
|
+
|
6
|
+
class RobotsTest
|
7
|
+
include Robots
|
8
|
+
|
9
|
+
def initialize
|
10
|
+
ilog "RobotsTest initialized"
|
11
|
+
end
|
12
|
+
|
13
|
+
def receive_msg msg
|
14
|
+
ilog msg
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
18
|
+
|
19
|
+
rt = RobotsTest.new
|
20
|
+
rt.release_robots
|
21
|
+
|
22
|
+
loop do
|
23
|
+
sleep 1
|
24
|
+
rt.send_msg "RobotsTest is working!"
|
25
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'rofl' #gem install pangdudu-rofl --source=http://gems.github.com
|
3
|
+
require 'robots'
|
4
|
+
require 'robots_xml'
|
5
|
+
|
6
|
+
#the RobotsXml module supplies nice methods for xml handling
|
7
|
+
#create xml messages like this: xml_msg = create_xml_msg { |b| b.body("test"); b.info("timestamp" => "#{Time.now}") }
|
8
|
+
#send them like this: send_msg xml_msg
|
9
|
+
#parse them like this: parse_xml_msg xml_msg,xpath
|
10
|
+
|
11
|
+
class RobotsProto
|
12
|
+
include Robots
|
13
|
+
include RobotsXml
|
14
|
+
|
15
|
+
def initialize
|
16
|
+
ilog "RobotsProto initialized"
|
17
|
+
end
|
18
|
+
|
19
|
+
#method that gets called when a new message arrives
|
20
|
+
def receive_msg msg
|
21
|
+
check_for_interests msg
|
22
|
+
end
|
23
|
+
|
24
|
+
#check if this msg interests us
|
25
|
+
def check_for_interests xml_msg
|
26
|
+
#message filter callback looks like this now
|
27
|
+
info = parse_xml_msg xml_msg,"//info"
|
28
|
+
dlog info unless info.empty?
|
29
|
+
#and one that doesn't work, unless you add this tag to the xml
|
30
|
+
notfound = parse_xml_msg xml_msg,"//thereisnosuchtag"
|
31
|
+
dlog notfound unless notfound.empty?
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
|
36
|
+
#start the app
|
37
|
+
rp = RobotsProto.new
|
38
|
+
rp.release_robots #start the robot agent module
|
39
|
+
|
40
|
+
#build you own loop if you need one
|
41
|
+
loop do
|
42
|
+
sleep 1
|
43
|
+
#send an xml message over the system
|
44
|
+
rp.send_msg rp.create_xml_msg { |b| b.body("test"); b.info("timestamp" => "#{Time.now}") }
|
45
|
+
end
|
data/lib/robots_xml.rb
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'rofl' #gem install pangdudu-rofl --source=http://gems.github.com
|
3
|
+
require 'hpricot' #my favourite xml parser
|
4
|
+
require 'builder' #very simple xml builder
|
5
|
+
|
6
|
+
module RobotsXml
|
7
|
+
|
8
|
+
#create an xml message
|
9
|
+
def create_xml_msg &block
|
10
|
+
b = Builder::XmlMarkup.new
|
11
|
+
return b.msg &block
|
12
|
+
end
|
13
|
+
|
14
|
+
#parse a xml message
|
15
|
+
def parse_xml_msg xml_msg,xpath="//msg"
|
16
|
+
begin
|
17
|
+
xml = Hpricot.XML(xml_msg)
|
18
|
+
msg = (xml/xpath)
|
19
|
+
return msg
|
20
|
+
rescue
|
21
|
+
wlog "message parsing error!"
|
22
|
+
return xml = Hpricot.XML("<msg>parsing error</msg>")
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pangdudu-robots
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- pangdudu
|
@@ -36,6 +36,8 @@ files:
|
|
36
36
|
- lib/robots.rb
|
37
37
|
- lib/robots_agent.rb
|
38
38
|
- lib/robots_infrastructure.rb
|
39
|
+
- lib/robots_xml.rb
|
40
|
+
- lib/robots_prototype.rb
|
39
41
|
- config/org.robots.service.conf
|
40
42
|
has_rdoc: true
|
41
43
|
homepage: http://github.com/pangdudu/robots
|