Kanzi Connect  3.9.9
Kanzi Connect C++ API
kanzi::connect::p2p::RoutingRules Class Reference

Entity that manages messge routing rules for a single service instance. More...

#include <routingrules.hpp>

Classes

class  Endpoint
 Endpoint for communication. More...
 
class  Route
 Defines a route for a single communications element. More...
 

Public Types

typedef vector< shared_ptr< Endpoint > >::iterator EndpointIterator
 
typedef unordered_map< string, RouteSharedPtr >::iterator Iterator
 
typedef shared_ptr< RouteRouteSharedPtr
 

Public Member Functions

void addEndpoint (shared_ptr< Endpoint > ep)
 Inserts an endpoint to list of endpoints. More...
 
bool addRoute (const string &xml)
 Add new route. More...
 
EndpointIterator beginEndpoints ()
 Get iterator to beginning of endpoints. More...
 
Iterator beginEvents ()
 begin iteration of events More...
 
Iterator beginMethods ()
 begin iteration of methods More...
 
void clearEndpoints ()
 Clears all existing endpoints. More...
 
vector< shared_ptr< RoutingRules::Endpoint > > collectRequiredEndpoints (const string &reliableBearer, const string &unreliableBearer)
 Used on service side where routing rules are analyzed and then a list of required endpoints is collected. More...
 
EndpointIterator endEndpoints ()
 Get iterator to end of endpoints. More...
 
Iterator endEvents ()
 
Iterator endMethods ()
 
int getMetaDataInt (const string &name, int def=-1)
 return integer from metadata More...
 
string getMetaDataString (const string &name)
 return stringfrom metadata More...
 
bool isEmpty () const
 Is the object empty i.e. More...
 
bool removeRouteForRuntimeData ()
 Remove route for runtime data. More...
 
bool removeRouteForSubject (const string &subjectName)
 Remove route for given subject. More...
 
bool requireDirectLink () const
 Does any of the referred routing rules require direct link(s) or is this service server only. More...
 
RouteSharedPtr routeForEvent (const string &eventName)
 Returns a preferred route for a specific event. More...
 
RouteSharedPtr routeForEventMessage (const string &eventMessageName)
 Returns a preferred route for a specific event. More...
 
RouteSharedPtr routeForMethod (const string &methodName)
 Returns a preferred route for a specific method. More...
 
RouteSharedPtr routeForMethodMessage (const string &methodMessageName)
 Returns a preferred route for a specific method. More...
 
RouteSharedPtr routeForRuntimeData ()
 Returns a preferred route for a runtime data. More...
 
 RoutingRules (const string &xml, const string interfacename="", bool verboseLogging=false)
 Constructor. More...
 
string toXml (unordered_map< string, string > *metadata=nullptr)
 Converts the routing information to XML. More...
 
 ~RoutingRules ()
 Destructor. More...
 

Protected Types

enum  { GetMethods = 0x01, GetEvents = 0x02, GetRuntimeData = 0x04 }
 

Protected Member Functions

set< string > collectAllEndpointIdentifiers ()
 Collects all endpoint identifiers. More...
 
bool findEndpointForRoute (Route &r)
 Fills endpoint for a route. More...
 
RoutingRules::RouteSharedPtr findRouteUsingEndpoint (shared_ptr< RoutingRules::Endpoint > ep)
 finds a route that uses this specific endpoint More...
 
vector< RoutingRules::RouteSharedPtrgetRoutesWithoutEndpoint (int mask=GetMethods|GetEvents|GetRuntimeData)
 Find all routes that don't have endpoint bound to them. More...
 
string invokableToMessage (const string &invocable, bool method)
 Creates a corresponding message name from a invocable name. More...
 

Detailed Description

Entity that manages messge routing rules for a single service instance.

Member Typedef Documentation

◆ EndpointIterator

typedef vector<shared_ptr<Endpoint> >::iterator kanzi::connect::p2p::RoutingRules::EndpointIterator

◆ Iterator

typedef unordered_map<string, RouteSharedPtr>::iterator kanzi::connect::p2p::RoutingRules::Iterator

◆ RouteSharedPtr

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
protected
Enumerator
GetMethods 
GetEvents 
GetRuntimeData 

Constructor & Destructor Documentation

◆ RoutingRules()

kanzi::connect::p2p::RoutingRules::RoutingRules ( const string &  xml,
const string  interfacename = "",
bool  verboseLogging = false 
)

Constructor.

Parameters
xmlThe XML document describing the routing.
interfacenameThe name of the interface.

◆ ~RoutingRules()

kanzi::connect::p2p::RoutingRules::~RoutingRules ( )

Destructor.

Member Function Documentation

◆ addEndpoint()

void kanzi::connect::p2p::RoutingRules::addEndpoint ( shared_ptr< Endpoint ep)

Inserts an endpoint to list of endpoints.

Parameters
epthe endpoint to insert.

◆ addRoute()

bool kanzi::connect::p2p::RoutingRules::addRoute ( const string &  xml)

Add new route.

Parameters
xmlContains the route definition in xml
Returns
True if route was added successfully

◆ beginEndpoints()

EndpointIterator kanzi::connect::p2p::RoutingRules::beginEndpoints ( )

Get iterator to beginning of endpoints.

Returns
iterator

◆ beginEvents()

Iterator kanzi::connect::p2p::RoutingRules::beginEvents ( )

begin iteration of events

Returns
iterator

◆ beginMethods()

Iterator kanzi::connect::p2p::RoutingRules::beginMethods ( )

begin iteration of methods

Returns
iterator

◆ clearEndpoints()

void kanzi::connect::p2p::RoutingRules::clearEndpoints ( )

Clears all existing endpoints.

◆ collectAllEndpointIdentifiers()

set<string> kanzi::connect::p2p::RoutingRules::collectAllEndpointIdentifiers ( )
protected

Collects all endpoint identifiers.

Returns
set of endpoint identifier strings

◆ collectRequiredEndpoints()

vector<shared_ptr<RoutingRules::Endpoint> > kanzi::connect::p2p::RoutingRules::collectRequiredEndpoints ( const string &  reliableBearer,
const string &  unreliableBearer 
)

Used on service side where routing rules are analyzed and then a list of required endpoints is collected.

Parameters
reliableBearername of the reliable bearer
unreliableBearername of the unreliable bearer
Returns
vector of endpoints required.

◆ endEndpoints()

EndpointIterator kanzi::connect::p2p::RoutingRules::endEndpoints ( )

Get iterator to end of endpoints.

Returns
iterator

◆ endEvents()

Iterator kanzi::connect::p2p::RoutingRules::endEvents ( )
Returns
end iterator

◆ endMethods()

Iterator kanzi::connect::p2p::RoutingRules::endMethods ( )
Returns
end iterator

◆ findEndpointForRoute()

bool kanzi::connect::p2p::RoutingRules::findEndpointForRoute ( Route r)
protected

Fills endpoint for a route.

Parameters
rroute where to the endpoint information is to be added
Returns
true if matching endpoint was found.

◆ findRouteUsingEndpoint()

RoutingRules::RouteSharedPtr kanzi::connect::p2p::RoutingRules::findRouteUsingEndpoint ( shared_ptr< RoutingRules::Endpoint ep)
protected

finds a route that uses this specific endpoint

Parameters
ependpoint
Returns
route or empty shared pointer

◆ getMetaDataInt()

int kanzi::connect::p2p::RoutingRules::getMetaDataInt ( const string &  name,
int  def = -1 
)

return integer from metadata

Parameters
namethe name of the meta element to retrieve
defdefault value to return if not found
Returns
retrieved value.

◆ getMetaDataString()

string kanzi::connect::p2p::RoutingRules::getMetaDataString ( const string &  name)

return stringfrom metadata

Parameters
namethe name of the meta element to retrieve
Returns
retrieved value. empty string if not found.

◆ getRoutesWithoutEndpoint()

vector<RoutingRules::RouteSharedPtr> kanzi::connect::p2p::RoutingRules::getRoutesWithoutEndpoint ( int  mask = GetMethods|GetEvents|GetRuntimeData)
protected

Find all routes that don't have endpoint bound to them.

Returns
routes with no endpoint bound

◆ invokableToMessage()

string kanzi::connect::p2p::RoutingRules::invokableToMessage ( const string &  invocable,
bool  method 
)
protected

Creates a corresponding message name from a invocable name.

Parameters
invocablethe method name, E.g. playTrack
methodif true, then method message name is created, else event message name is created
Returns
message name

◆ isEmpty()

bool kanzi::connect::p2p::RoutingRules::isEmpty ( ) const
inline

Is the object empty i.e.

no routing information included

Returns
true if empty.

◆ removeRouteForRuntimeData()

bool kanzi::connect::p2p::RoutingRules::removeRouteForRuntimeData ( )

Remove route for runtime data.

Returns
True if removed successfully, false if not found

◆ removeRouteForSubject()

bool kanzi::connect::p2p::RoutingRules::removeRouteForSubject ( const string &  subjectName)

Remove route for given subject.

Parameters
subjectNameName of the method or event identifying the route to remove
Returns
True if removed successfully, false if not found

◆ requireDirectLink()

bool kanzi::connect::p2p::RoutingRules::requireDirectLink ( ) const

Does any of the referred routing rules require direct link(s) or is this service server only.

Returns
true if direct link might be required.

◆ routeForEvent()

RouteSharedPtr kanzi::connect::p2p::RoutingRules::routeForEvent ( const string &  eventName)

Returns a preferred route for a specific event.

Parameters
eventNameThe name of the event to ask.
Returns
The route to apply.

◆ routeForEventMessage()

RouteSharedPtr kanzi::connect::p2p::RoutingRules::routeForEventMessage ( const string &  eventMessageName)

Returns a preferred route for a specific event.

Parameters
eventMessageNameThe name of the event message to ask.
Returns
The route to apply.

◆ routeForMethod()

RouteSharedPtr kanzi::connect::p2p::RoutingRules::routeForMethod ( const string &  methodName)

Returns a preferred route for a specific method.

Parameters
methodNameThe name of the method to ask.
Returns
The route to apply.

◆ routeForMethodMessage()

RouteSharedPtr kanzi::connect::p2p::RoutingRules::routeForMethodMessage ( const string &  methodMessageName)

Returns a preferred route for a specific method.

Parameters
methodMessageNameThe name of the method message to ask.
Returns
The route to apply.

◆ routeForRuntimeData()

RouteSharedPtr kanzi::connect::p2p::RoutingRules::routeForRuntimeData ( )

Returns a preferred route for a runtime data.

Returns
The route to apply.

◆ toXml()

string kanzi::connect::p2p::RoutingRules::toXml ( unordered_map< string, string > *  metadata = nullptr)

Converts the routing information to XML.

Parameters
metadataOptional meta information put into the XML document. Name-value pairs.
Returns
The XML representation of the routing information.

The documentation for this class was generated from the following file: