summaryrefslogtreecommitdiff
path: root/src/prefix_filter.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/prefix_filter.hpp')
-rw-r--r--src/prefix_filter.hpp75
1 files changed, 0 insertions, 75 deletions
diff --git a/src/prefix_filter.hpp b/src/prefix_filter.hpp
index 0faa865..63bc409 100644
--- a/src/prefix_filter.hpp
+++ b/src/prefix_filter.hpp
@@ -22,87 +22,12 @@
#ifndef __XS_PREFIX_FILTER_HPP_INCLUDED__
#define __XS_PREFIX_FILTER_HPP_INCLUDED__
-#include <stddef.h>
-#include <map>
-
-#include "stdint.hpp"
-
namespace xs
{
// Canonical extension object.
extern void *prefix_filter;
- class prefix_filter_t
- {
- public:
-
- prefix_filter_t ();
- ~prefix_filter_t ();
-
- int subscribe (void *core_, void *subscriber_,
- const unsigned char *data_, size_t size_);
- int unsubscribe (void *core_, void *subscriber_,
- const unsigned char *data_, size_t size_);
- void unsubscribe_all (void *core_, void *subscriber_);
- void enumerate (void *core_);
- int match (void *core_, const unsigned char *data_, size_t size_);
- void match_all (void *core_, const unsigned char *data_, size_t size_);
-
- private:
-
- struct node_t
- {
- // Pointer to particular subscriber associated with
- // the reference count.
- typedef std::map <void*, int> subscribers_t;
- subscribers_t *subscribers;
-
- unsigned char min;
- unsigned short count;
- unsigned short live_nodes;
- union {
- struct node_t *node;
- struct node_t **table;
- } next;
-
- };
-
- static void init (node_t *node_);
- static void close (node_t *node_);
-
- // Add key to the trie. Returns true if it's a new subscription
- // rather than a duplicate.
- static bool add (node_t *node_, const unsigned char *prefix_,
- size_t size_, void *subscriber_);
-
- // Remove specific subscription from the trie. Return true is it
- // was actually removed rather than de-duplicated.
- static bool rm (node_t *node_, const unsigned char *prefix_,
- size_t size_, void *subscriber_);
-
- // Remove all subscriptions for a specific peer from the trie.
- // If there are no subscriptions left on some topics, invoke the
- // supplied callback function.
- static void rm (node_t *node_, void *subscriber_, void *arg_);
-
- static void rm_helper (node_t *node_, void *subscriber_,
- unsigned char **buff_, size_t buffsize_, size_t maxbuffsize_,
- void *arg_);
-
- // Lists all the subscriptions in the trie.
- static void list (node_t *node_, unsigned char **buff_,
- size_t buffsize_, size_t maxbuffsize_, void *arg_);
-
- // Checks whether node can be safely removed.
- static bool is_redundant (node_t *node_);
-
- node_t root;
-
- prefix_filter_t (const prefix_filter_t&);
- const prefix_filter_t &operator = (const prefix_filter_t&);
- };
-
}
#endif