You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@celix.apache.org by er...@apache.org on 2018/02/06 20:54:07 UTC
celix git commit: Added shell command to inspect internal state of
ZMQ PS-admin
Repository: celix
Updated Branches:
refs/heads/develop 008b4f103 -> ea782bd38
Added shell command to inspect internal state of ZMQ PS-admin
Project: http://git-wip-us.apache.org/repos/asf/celix/repo
Commit: http://git-wip-us.apache.org/repos/asf/celix/commit/ea782bd3
Tree: http://git-wip-us.apache.org/repos/asf/celix/tree/ea782bd3
Diff: http://git-wip-us.apache.org/repos/asf/celix/diff/ea782bd3
Branch: refs/heads/develop
Commit: ea782bd38a5a009c8e07a5f97ac6d841d7dac8ae
Parents: 008b4f1
Author: Erjan Altena <er...@gmail.com>
Authored: Tue Feb 6 21:53:48 2018 +0100
Committer: Erjan Altena <er...@gmail.com>
Committed: Tue Feb 6 21:53:48 2018 +0100
----------------------------------------------------------------------
pubsub/pubsub_admin_zmq/CMakeLists.txt | 4 +-
pubsub/pubsub_admin_zmq/src/psa_activator.c | 48 ++++++++++++++++++--
pubsub/pubsub_admin_zmq/src/pubsub_admin_impl.h | 4 ++
3 files changed, 51 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/celix/blob/ea782bd3/pubsub/pubsub_admin_zmq/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/pubsub/pubsub_admin_zmq/CMakeLists.txt b/pubsub/pubsub_admin_zmq/CMakeLists.txt
index 6b3ecfd..ddc17eb 100644
--- a/pubsub/pubsub_admin_zmq/CMakeLists.txt
+++ b/pubsub/pubsub_admin_zmq/CMakeLists.txt
@@ -54,7 +54,7 @@ if (BUILD_PUBSUB_PSA_ZMQ)
src
)
- install_celix_bundle(celix_pubsub_admin_zmq EXPORT celix COMPONENT pubsub)
-
+ install_celix_bundle(celix_pubsub_admin_zmq EXPORT celix COMPONENT pubsub)
+ target_link_libraries(celix_pubsub_admin_zmq PRIVATE Celix::shell_api)
add_library(Celix::pubsub_admin_zmq ALIAS celix_pubsub_admin_zmq)
endif()
http://git-wip-us.apache.org/repos/asf/celix/blob/ea782bd3/pubsub/pubsub_admin_zmq/src/psa_activator.c
----------------------------------------------------------------------
diff --git a/pubsub/pubsub_admin_zmq/src/psa_activator.c b/pubsub/pubsub_admin_zmq/src/psa_activator.c
index fd07310..73c45fa 100644
--- a/pubsub/pubsub_admin_zmq/src/psa_activator.c
+++ b/pubsub/pubsub_admin_zmq/src/psa_activator.c
@@ -27,7 +27,6 @@
#include <stdlib.h>
#include "bundle_activator.h"
-#include "service_registration.h"
#include "service_tracker.h"
#include "pubsub_admin_impl.h"
@@ -40,6 +39,43 @@ struct activator {
service_tracker_pt serializerTracker;
};
+
+static celix_status_t shellCommand(void *handle, char * commandLine, FILE *outStream, FILE *errorStream) {
+ struct activator *act= (struct activator*)handle;
+ if (act->admin->externalPublications && !hashMap_isEmpty(act->admin->externalPublications)) {
+ fprintf(outStream, "External Publications:\n");
+ for(hash_map_iterator_t iter = hashMapIterator_construct(act->admin->externalPublications); hashMapIterator_hasNext(&iter);) {
+ const char* key = (const char*)hashMapIterator_nextKey(&iter);
+ fprintf(outStream, " %s\n", key);
+ }
+ }
+ if (act->admin->localPublications && !hashMap_isEmpty(act->admin->localPublications)) {
+ fprintf(outStream, "Local Publications:\n");
+ for (hash_map_iterator_t iter = hashMapIterator_construct(
+ act->admin->localPublications); hashMapIterator_hasNext(&iter);) {
+ const char *key = (const char *) hashMapIterator_nextKey(&iter);
+ fprintf(outStream, " %s\n", key);
+ }
+ }
+ if (act->admin->subscriptions && !hashMap_isEmpty(act->admin->subscriptions)) {
+ fprintf(outStream, "Active Subscriptions:\n");
+ for (hash_map_iterator_t iter = hashMapIterator_construct(
+ act->admin->subscriptions); hashMapIterator_hasNext(&iter);) {
+ const char *key = (const char *) hashMapIterator_nextKey(&iter);
+ fprintf(outStream, " %s\n", key);
+ }
+ }
+ if (act->admin->pendingSubscriptions && !hashMap_isEmpty(act->admin->pendingSubscriptions)) {
+ fprintf(outStream, "Pending Subscriptions:\n");
+ for (hash_map_iterator_t iter = hashMapIterator_construct(
+ act->admin->pendingSubscriptions); hashMapIterator_hasNext(&iter);) {
+ const char *key = (const char *) hashMapIterator_nextKey(&iter);
+ fprintf(outStream, " %s\n", key);
+ }
+ }
+ return CELIX_SUCCESS;
+}
+
celix_status_t bundleActivator_create(bundle_context_pt context, void **userData) {
celix_status_t status = CELIX_SUCCESS;
struct activator *activator;
@@ -73,7 +109,13 @@ celix_status_t bundleActivator_create(bundle_context_pt context, void **userData
}
}
}
-
+ properties_pt shellProps = properties_create();
+ properties_set(shellProps, OSGI_SHELL_COMMAND_NAME, "psa_zmq_info");
+ properties_set(shellProps, OSGI_SHELL_COMMAND_USAGE, "psa_zmq_info");
+ properties_set(shellProps, OSGI_SHELL_COMMAND_DESCRIPTION, "psa_zmq_info: Overview of PubSub ZMQ Admin");
+ activator->admin->shellCmdService.handle = activator;
+ activator->admin->shellCmdService.executeCommand = shellCommand;
+ bundleContext_registerService(context, OSGI_SHELL_COMMAND_SERVICE_NAME, &activator->admin->shellCmdService, shellProps, &activator->admin->shellCmdReg);
return status;
}
@@ -133,7 +175,7 @@ celix_status_t bundleActivator_destroy(void * userData, bundle_context_pt contex
serviceTracker_destroy(activator->serializerTracker);
pubsubAdmin_destroy(activator->admin);
activator->admin = NULL;
-
+ serviceRegistration_unregister(activator->admin->shellCmdReg);
free(activator);
return status;
http://git-wip-us.apache.org/repos/asf/celix/blob/ea782bd3/pubsub/pubsub_admin_zmq/src/pubsub_admin_impl.h
----------------------------------------------------------------------
diff --git a/pubsub/pubsub_admin_zmq/src/pubsub_admin_impl.h b/pubsub/pubsub_admin_zmq/src/pubsub_admin_impl.h
index 03e8556..040a0d3 100644
--- a/pubsub/pubsub_admin_zmq/src/pubsub_admin_impl.h
+++ b/pubsub/pubsub_admin_zmq/src/pubsub_admin_impl.h
@@ -40,6 +40,7 @@
#include "pubsub_admin.h"
#include "pubsub_admin_match.h"
#include "log_helper.h"
+#include "command.h"
#define PSA_ZMQ_BASE_PORT "PSA_ZMQ_BASE_PORT"
#define PSA_ZMQ_MAX_PORT "PSA_ZMQ_MAX_PORT"
@@ -87,6 +88,9 @@ struct pubsub_admin {
unsigned int basePort;
unsigned int maxPort;
+
+ command_service_t shellCmdService;
+ service_registration_pt shellCmdReg;
};
celix_status_t pubsubAdmin_create(bundle_context_pt context, pubsub_admin_pt *admin);