BIND 10 trac2930, updated. 118890085f893c94eca50176084b972ad90025f9 [2937] Sending notifications, C++ version

BIND 10 source code commits bind10-changes at lists.isc.org
Tue May 21 13:58:58 UTC 2013


The branch, trac2930 has been updated
       via  118890085f893c94eca50176084b972ad90025f9 (commit)
      from  9d7bd1274b7ff4578e108c8c13bad81cc2867d14 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 118890085f893c94eca50176084b972ad90025f9
Author: Michal 'vorner' Vaner <michal.vaner at nic.cz>
Date:   Tue May 21 15:58:03 2013 +0200

    [2937] Sending notifications, C++ version

-----------------------------------------------------------------------

Summary of changes:
 src/lib/cc/proto_defs.cc                    |    2 ++
 src/lib/config/ccsession.cc                 |   16 ++++++++++++++++
 src/lib/config/tests/ccsession_unittests.cc |   22 ++++++++++++++++++++++
 3 files changed, 40 insertions(+)

-----------------------------------------------------------------------
diff --git a/src/lib/cc/proto_defs.cc b/src/lib/cc/proto_defs.cc
index 8f7fb91..9ecaf7a 100644
--- a/src/lib/cc/proto_defs.cc
+++ b/src/lib/cc/proto_defs.cc
@@ -43,6 +43,8 @@ const char* const CC_COMMAND_STOP = "stop";
 // The wildcards of some headers
 const char* const CC_TO_WILDCARD = "*";
 const char* const CC_INSTANCE_WILDCARD = "*";
+// Prefixes for groups
+const char* const CC_GROUP_NOTIFICATION_PREFIX = "notifications/";
 // Reply codes
 const int CC_REPLY_NO_RECPT = -1;
 const int CC_REPLY_SUCCESS = 0;
diff --git a/src/lib/config/ccsession.cc b/src/lib/config/ccsession.cc
index d094ab9..85c9a01 100644
--- a/src/lib/config/ccsession.cc
+++ b/src/lib/config/ccsession.cc
@@ -884,5 +884,21 @@ ModuleCCSession::rpcCall(const std::string &command, const std::string &group,
     }
 }
 
+void
+ModuleCCSession::notify(const std::string &group, const std::string &name,
+                        const ConstElementPtr &params)
+{
+    const ElementPtr message(Element::createMap());
+    const ElementPtr notification(Element::createList());
+    notification->add(Element::create(name));
+    if (params) {
+        notification->add(params);
+    }
+    message->set("notification", notification);
+    groupSendMsg(message, isc::cc::CC_GROUP_NOTIFICATION_PREFIX + group,
+                 isc::cc::CC_INSTANCE_WILDCARD,
+                 isc::cc::CC_TO_WILDCARD, false);
+}
+
 }
 }
diff --git a/src/lib/config/tests/ccsession_unittests.cc b/src/lib/config/tests/ccsession_unittests.cc
index c11cd24..ffc5434 100644
--- a/src/lib/config/tests/ccsession_unittests.cc
+++ b/src/lib/config/tests/ccsession_unittests.cc
@@ -117,6 +117,28 @@ TEST_F(CCSessionTest, rpcNoRecpt) {
                  RPCRecipientMissing);
 }
 
+// Test sending a notification
+TEST_F(CCSessionTest, notify) {
+    ModuleCCSession mccs(ccspecfile("spec1.spec"), session, NULL, NULL, false,
+                         false);
+    mccs.notify("group", "event", el("{\"param\": true}"));
+    const ConstElementPtr notification(el(
+        "["
+        "   \"notifications/group\","
+        "   \"*\","
+        "   {"
+        "       \"notification\": ["
+        "           \"event\", {"
+        "               \"param\": true"
+        "           }"
+        "       ]"
+        "   },"
+        "   -1"
+        "]"));
+    EXPECT_TRUE(notification->equals(*session.getMsgQueue()->get(1))) <<
+            session.getMsgQueue()->get(1)->toWire();
+}
+
 TEST_F(CCSessionTest, createAnswer) {
     ConstElementPtr answer;
     answer = createAnswer();



More information about the bind10-changes mailing list