22 #ifndef __M2ETIS_PUBSUB_PARTITION_BASEPARTITION_H__
23 #define __M2ETIS_PUBSUB_PARTITION_BASEPARTITION_H__
25 #include "boost/assign/list_of.hpp"
31 template <
typename NetworkType,
typename EventType>
54 virtual std::vector<int>::size_type
getPublishTree(
const PayloadPtr message,
const typename NetworkType::Key &
self) = 0;
64 virtual boost::shared_ptr<filter::FilterExp<EventType>>
getPredicate(
size_t id) = 0;
69 virtual bool createPartition(
const typename NetworkType::Key & root) = 0;
86 virtual void changeRoot(
size_t id,
typename NetworkType::Key & root) = 0;
89 return "BasePartition";
virtual void createRendezvousPartition(const typename NetworkType::Key &rendezvous)=0
creates a base partition for the RP (dynamic)
virtual boost::shared_ptr< filter::FilterExp< EventType > > getPredicate(size_t id)=0
returns the predicate for the given partition id (dynamic)
virtual std::vector< int >::size_type getPublishTree(const PayloadPtr message, const typename NetworkType::Key &self)=0
returns the tree index the given node with the given payload should publish on (static & dynamic) ...
boost::shared_ptr< EventType > PayloadPtr
virtual std::string toString()
virtual void changePredicate(size_t id, boost::shared_ptr< filter::FilterExp< EventType >> predicates)=0
changes the filter predicate for the partition with the given id (dynamic)
virtual void removePartition(size_t id)=0
removes the partition with the given id (dynamic)
virtual void addPartition(boost::shared_ptr< filter::FilterExp< EventType > > predicate, const typename NetworkType::Key &root)=0
adds a new partition to the strategy at nodes not being RP (dynamic)
virtual void changeRoot(size_t id, typename NetworkType::Key &root)=0
virtual std::vector< unsigned int > getSubscribeTrees(boost::shared_ptr< filter::FilterExp< EventType >> dynamic_filter)=0
returns the tree indices of all trees matching the predicate to subscribe on (static & dynamic) ...
virtual bool createPartition(const typename NetworkType::Key &root)=0
can create a new partition for this channel if a new node (root) joins, return true, if a new partition was created, otherwise false (dynamic)
virtual std::vector< int > getTreeNames()=0
returns amount of partitions this strategy contains (static & dynamic)