commit f8eacaad51cac2d6f0bd595afa81f51b458a0465
Author: Marc Dequènes (Duck) <Duck@DuckCorp.org>
Date:   Mon Nov 15 22:30:57 2010 +0100

    [evol] MapMakerClient->TestClient, test with two conversations, and ideas for the future

diff --git a/bin/librarian b/bin/librarian
new file mode 100755
index 0000000..e29d5e1
--- /dev/null
+++ b/bin/librarian
@@ -0,0 +1,69 @@
+#!/usr/bin/ruby -Ku
+
+#--
+# CyborgHood, a distributed system management software.
+# Copyright (c) 2009-2010 Marc Dequènes (Duck) <Duck@DuckCorp.org>
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#++
+
+# to allow in-place run for test
+$: << File.join(File.dirname(__FILE__), "..", "lib")
+
+require 'cyborghood/cyborg'
+
+
+module CyborgHood
+  module LibrarianHome
+    include I18nTranslation
+    bindtextdomain("cyborghood_librarian", {:path => Config::L10N_DIR, :charset => "UTF-8"})
+
+    class Librarian < Cyborg
+      # load config before modules are included
+      Config.load(self.human_name)
+
+      include BotNetServer
+
+      def interface
+        LibrarianInterface.instance
+      end
+    end
+
+    class LibrarianInterface
+      include CyborgServerInterface
+      include CyborgServerRootInterfaceAddon
+
+      class Gruik
+        include CyborgServerInterface
+
+        def api_methods
+          ["g1", "g2", "g3"]
+        end
+
+        dynamic_interface {|node_name| ">>> #{node_name} <<<" }
+      end
+    end
+  end
+end
+
+bot = CyborgHood::LibrarianHome::Librarian.new
+
+trap('INT') do
+  bot.ask_to_stop
+end
+trap('TERM') do
+  bot.ask_to_stop
+end
+
+bot.run
diff --git a/bin/mapmaker_client b/bin/mapmaker_client
deleted file mode 100755
index ce1251f..0000000
--- a/bin/mapmaker_client
+++ /dev/null
@@ -1,84 +0,0 @@
-#!/usr/bin/ruby -Ku
-
-#--
-# CyborgHood, a distributed system management software.
-# Copyright (c) 2009-2010 Marc Dequènes (Duck) <Duck@DuckCorp.org>
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-#++
-
-# to allow in-place run for test
-$: << File.join(File.dirname(__FILE__), "..", "lib")
-
-require 'cyborghood/cyborg'
-
-
-module CyborgHood
-  module MapMakerHome
-    include I18nTranslation
-    bindtextdomain("cyborghood_mapmaker", {:path => Config::L10N_DIR, :charset => "UTF-8"})
-
-    class MapMakerClient < Cyborg
-      # load config before modules are included
-      Config.load
-
-      include BotNet
-
-      def start_work
-        # to test the closure through the inner instance_eval calls
-        toto = true
-
-        conversation_with "MapMaker" do
-          on_error do
-            puts "Halalalala !"
-          end
-          thread "super taiste" do
-            call :ver, "/api_version"
-            call :zones, "/DNS/Zones" if toto
-            on_error do
-              puts "Sniff !"
-              pp reply
-            end
-            on_success do
-              puts "Yahou !"
-              pp reply
-              call :gogogo, "/DNS"
-              on_error do
-                pp "Plouf"
-                pp reply
-              end
-              on_success do
-                pp "Hop!"
-                pp reply
-              end
-            end
-          end
-          #stop_bot :at_once
-          stop_bot :when_finished
-        end
-      end
-    end
-  end
-end
-
-bot = CyborgHood::MapMakerHome::MapMakerClient.new
-
-trap('INT') do
-  bot.ask_to_stop
-end
-trap('TERM') do
-  bot.ask_to_stop
-end
-
-bot.run
diff --git a/bin/test_client b/bin/test_client
new file mode 100755
index 0000000..66ed440
--- /dev/null
+++ b/bin/test_client
@@ -0,0 +1,108 @@
+#!/usr/bin/ruby -Ku
+
+#--
+# CyborgHood, a distributed system management software.
+# Copyright (c) 2009-2010 Marc Dequènes (Duck) <Duck@DuckCorp.org>
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#++
+
+# to allow in-place run for test
+$: << File.join(File.dirname(__FILE__), "..", "lib")
+
+require 'cyborghood/cyborg'
+
+
+module CyborgHood
+  module TestClientHome
+    include I18nTranslation
+    bindtextdomain("cyborghood_mapmaker", {:path => Config::L10N_DIR, :charset => "UTF-8"})
+
+    class TestClientClient < Cyborg
+      # load config before modules are included
+      Config.load
+
+      include BotNet
+
+      def start_work
+        # to test the closure through the inner instance_eval calls
+        toto = true
+
+#        task "compare stuff" do
+#          ask :MapMaker, :ver1, "/api_version"
+#          ask :Librarian, :ver2, "/api_version"
+#          on_error do
+#            puts "PLOUF"
+#            pp reply
+#          end
+#          on_success do
+#            puts "OK"
+#            pp reply
+#            puts "Tadam: " + (ver1 == ver2 ? "same" : "different")
+#          end
+#        end
+
+        conversation_with "MapMaker" do
+          on_error do
+            puts "Halalalala !"
+          end
+          thread "super taiste" do
+            call :ver, "/api_version"
+            call :zones, "/DNS/Zones" if toto
+            on_error do
+              puts "Sniff !"
+              pp reply
+            end
+            on_success do
+              puts "Yahou !"
+              pp reply
+              call :gogogo, "/DNS"
+              on_error do
+                pp "Plouf"
+                pp reply
+              end
+              on_success do
+                pp "Hop!"
+                pp reply
+              end
+            end
+          end
+          #stop_bot :at_once
+          stop_bot :when_finished
+        end
+
+        conversation_with "Librarian" do
+          thread "taistouille" do
+            call :sdf, "/Gruik"
+            on_success do
+              puts "Librarian GoGoGo!"
+              pp reply
+            end
+          end
+        end
+      end
+    end
+  end
+end
+
+bot = CyborgHood::TestClientHome::TestClientClient.new
+
+trap('INT') do
+  bot.ask_to_stop
+end
+trap('TERM') do
+  bot.ask_to_stop
+end
+
+bot.run
diff --git a/data/cyborghood/default_config/librarian.yaml b/data/cyborghood/default_config/librarian.yaml
new file mode 100644
index 0000000..cd21505
--- /dev/null
+++ b/data/cyborghood/default_config/librarian.yaml
@@ -0,0 +1,2 @@
+---
+
diff --git a/data/cyborghood/schema/librarian.yaml b/data/cyborghood/schema/librarian.yaml
new file mode 100644
index 0000000..6c97556
--- /dev/null
+++ b/data/cyborghood/schema/librarian.yaml
@@ -0,0 +1,4 @@
+---
+type: map
+mapping:
+  zzz: { type: str }
