summaryrefslogtreecommitdiff
path: root/src/ctx.hpp
diff options
context:
space:
mode:
authorMartin Sustrik <sustrik@250bpm.com>2012-04-05 07:32:58 +0200
committerMartin Sustrik <sustrik@250bpm.com>2012-04-05 07:32:58 +0200
commitd82cbb3a81f116cd22e9895ecac36ac3d7b38929 (patch)
tree03c923311b937f550bec325d131476513a02bebf /src/ctx.hpp
parent52b8a917deb2990e7197b82e81e0258ebe30f424 (diff)
XS_PLUGIN and XS_FILTER implementation
This patch introduces following features: - XS_PLUGIN context option to add plugins to libxs - XS_FILTER option to switch between different filter types - Automatic loading of plug-ins is *not* implemented. From the implementation point of view: - standard prefix filter is implemented as a pluggable filter - trie_t and mtrie_t are joined into a single class - the code for 0MQ/3.1 compatibility is left in in the form of comments - new test for testing re-subscriptions is added Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
Diffstat (limited to 'src/ctx.hpp')
-rw-r--r--src/ctx.hpp14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/ctx.hpp b/src/ctx.hpp
index c4fa96a..54144ad 100644
--- a/src/ctx.hpp
+++ b/src/ctx.hpp
@@ -25,7 +25,8 @@
#include <map>
#include <vector>
#include <string>
-#include <stdarg.h>
+
+#include "../include/xs.h"
#include "mailbox.hpp"
#include "array.hpp"
@@ -88,6 +89,10 @@ namespace xs
// Returns reaper thread object.
xs::object_t *get_reaper ();
+ // Get the filter associated with the specified filter ID or NULL
+ // If such filter is not registered.
+ xs_filter_t *get_filter (int filter_id_);
+
// Management of inproc endpoints.
int register_endpoint (const char *addr_, endpoint_t &endpoint_);
void unregister_endpoints (xs::socket_base_t *socket_);
@@ -102,6 +107,9 @@ namespace xs
private:
+ // Plug in the extension specified.
+ int plug (const void *ext_);
+
// Used to check whether the object is a context.
uint32_t tag;
@@ -161,6 +169,10 @@ namespace xs
// Synchronisation of access to context options.
mutex_t opt_sync;
+ // List of all filters plugged into the context.
+ typedef std::map <int, xs_filter_t*> filters_t;
+ filters_t filters;
+
ctx_t (const ctx_t&);
const ctx_t &operator = (const ctx_t&);
};