Kanzi Connect  3.9.9
Kanzi Connect C++ API
kanzi::connect::ContentManager Class Reference

A class that acts as a content service that is an interface for all database content on server. More...

#include <content_manager.hpp>

Inheritance diagram for kanzi::connect::ContentManager:
kanzi::connect::VirtualFileProvider

Public Types

typedef function< void(const string &uri, int reason, int startRow, int endRow)> ContentInvalidationCallback
 
typedef function< void(const string &uri, ContentDataSharedPtr data)> ContentResultCallback
 Callback function for content result. More...
 
typedef function< ContentProvider *(WorkQueueInterface *workQueue)> CreationFunction
 Creator function type for content providers. More...
 
typedef map< string, shared_ptr< ContentProvider > > ProviderContainer
 
typedef ProviderContainer::iterator ProviderContainerIterator
 
typedef function< void(const string &uri, RuntimeDataObjectSharedPtr data)> RuntimeDataContentResultCallback
 

Public Member Functions

void addContentProvider (const string &uri, ContentProviderSharedPtr contentProvider)
 Adds existing content provider to system. More...
 
void addPendingQuery (unsigned int queryId, shared_ptr< RemoteQuery > query)
 Registers remote query to the system. More...
 
 ContentManager (ConnectDomainSharedPtr domain)
 Constructor. More...
 
vector< ContentProviderSharedPtrgetAllKnownContentProviders ()
 Retrieves all known content providers. More...
 
virtual ContentProviderCollectionSharedPtr getContentProvider () override
 Returns the content provider collection that contains all registered content on server. More...
 
shared_ptr< RemoteQuery > getPendingQuery (unsigned int queryId) const
 Retrieves pending remote query by it's unique id. More...
 
WorkQueueInterfacegetProxyWorkQueue ()
 Returns a proxied work queue instance that can be used by composited classes to to assign work to this service. More...
 
WorkQueueInterfacegetWorkQueue () const
 Access to signal that allows to invoke work(). More...
 
virtual void initialize (InterfaceDomainBase *domain, ContentClientSharedPtr contentClient, WorkQueueInterface *workQueue) override
 See AbstractService::initialize. More...
 
void instantiateRegisteredContentProviders ()
 Instantiates all registered content providers that has not yet been created. More...
 
virtual void invalidateContent (const string &uri, const ContentInvalidationInfo &data) override
 See ContentInterface::invalidateContent. More...
 
virtual void notifyChanged (const string &uri) override
 See ContentInterface::notifyChanged. More...
 
template<class _T >
shared_ptr< _T > registerAndCreateContentProvider (const string &domain, shared_ptr< ContentProviderCreator > creator)
 Same as registerContentProvider but also creates the provider immediately. More...
 
virtual void registerContent (const string &uri, const string &schema) override
 See ContentInterface::registerContent. More...
 
void registerContentProvider (const string &domain, shared_ptr< ContentProviderCreator > creator)
 Registers content provider to system. More...
 
void removeContentProvider (ContentProviderSharedPtr contentProvider)
 Removes existing content provider from system. More...
 
void removePendingQuery (unsigned int queryId)
 Unregisters remote query from the system. More...
 
virtual void respond (const int &uid, const QueryResponseData &arg) override
 See ContentInterface::respond. More...
 
virtual void returnCredits (const string &uri, const int &credits) override
 See ContentInterface::returnCredits. More...
 
virtual void subscribe (const QueryArgumentData &arg) override
 See ContentInterface::subscribe. More...
 
virtual bool subscribe (const QueryArgumentData &arg, ContentResultCallback callback, ContentInvalidationCallback invalidationCallback)
 Subscribe to content, allows to receive a callback when content subscription is updated. More...
 
virtual bool subscribe (shared_ptr< ContentServiceConcept::Session > session, const QueryArgumentData &arg, ContentResultCallback callback, ContentInvalidationCallback invalidationCallback)
 
virtual string subscribeRuntimeData (const string &uri) override
 No description given. More...
 
virtual string subscribeRuntimeData (const string &uri, RuntimeDataContentResultCallback callback)
 Subscribes to runtime data. More...
 
virtual string subscribeRuntimeData (shared_ptr< ContentServiceConcept::Session > session, const string &uri, RuntimeDataContentResultCallback callback)
 Subscribes to runtime data. More...
 
virtual void uninitialize () override
 See AbstractService::uninitialize. More...
 
virtual void unregisterContent (const string &uri) override
 See ContentInterface::unregisterContent. More...
 
virtual void unsubscribe (const string &uri) override
 See ContentInterface::unsubscribe. More...
 
virtual void unsubscribe (shared_ptr< ContentServiceConcept::Session > session, const string &uri)
 
void useDiagnosticsManager (DiagnosticsManagerSharedPtr diagnostics)
 Give a diagnostics manager functionality for content manager to use. More...
 
virtual void work (ConnectWorkItemSharedPtr work) override
 See AbstractService::work. More...
 
 ~ContentManager ()
 Destructor. More...
 
- Public Member Functions inherited from kanzi::connect::VirtualFileProvider
virtual ~VirtualFileProvider ()
 Virtual destructor for cleanup. More...
 

Protected Member Functions

shared_ptr< ContentProvidercreateContentProvider (const string &uri)
 Instantiates and initializes new content provider for given uri. More...
 
HTTPContentRequestSharedPtr createContentRequest (const string &id)
 Creates a content request originating from HTTP. More...
 
void destroyContentProvider (ContentProvider *provider)
 Uninitializes and destroys an existing content provider. More...
 
string handleContentSchemaRequest (const string &id)
 Handles a content provider specific schema request. More...
 
void initializeFilePathRegistrations ()
 Initialize file provider functionality. More...
 
virtual void onReleaseSession (AbstractSessionSharedPtr session) override
 See AbstractService::onReleaseSession. More...
 
void uninitializeFilePathRegistrations ()
 Uninitialize file provider functionality. More...
 
void unregisterRemoteContents ()
 Cleans up remote content providers away from the system when session is terminated for a client. More...
 
void unregisterRemoteContents (shared_ptr< ContentServiceConcept::Session > session)
 

Detailed Description

A class that acts as a content service that is an interface for all database content on server.

Implements ContentInterface, which allows to subscribe / unsubscribe to content.

Member Typedef Documentation

◆ ContentInvalidationCallback

typedef function<void(const string& uri, int reason, int startRow, int endRow)> kanzi::connect::ContentManager::ContentInvalidationCallback

◆ ContentResultCallback

typedef function<void(const string& uri, ContentDataSharedPtr data)> kanzi::connect::ContentManager::ContentResultCallback

Callback function for content result.

◆ CreationFunction

Creator function type for content providers.

◆ ProviderContainer

◆ ProviderContainerIterator

typedef ProviderContainer::iterator kanzi::connect::ContentManager::ProviderContainerIterator

◆ RuntimeDataContentResultCallback

Constructor & Destructor Documentation

◆ ContentManager()

kanzi::connect::ContentManager::ContentManager ( ConnectDomainSharedPtr  domain)

Constructor.

◆ ~ContentManager()

kanzi::connect::ContentManager::~ContentManager ( )

Destructor.

Member Function Documentation

◆ addContentProvider()

void kanzi::connect::ContentManager::addContentProvider ( const string &  uri,
ContentProviderSharedPtr  contentProvider 
)

Adds existing content provider to system.

Parameters
uriURI that is covered by this content provider.
contentProviderContent provider instance to add to system.

◆ addPendingQuery()

void kanzi::connect::ContentManager::addPendingQuery ( unsigned int  queryId,
shared_ptr< RemoteQuery >  query 
)

Registers remote query to the system.

Allows to wait for remote content provider to respond.

Parameters
queryIdUnique identifier for the query.
queryQuery to register.

◆ createContentProvider()

shared_ptr<ContentProvider> kanzi::connect::ContentManager::createContentProvider ( const string &  uri)
protected

Instantiates and initializes new content provider for given uri.

Parameters
uriDomain uri of the content provider.
Returns
Shared pointer to content provider that was created.

◆ createContentRequest()

HTTPContentRequestSharedPtr kanzi::connect::ContentManager::createContentRequest ( const string &  id)
protected

Creates a content request originating from HTTP.

Parameters
idthe uri containing first the service identifier, then possible table information and finally possible arguments for the query. Example com.rightware.content/songs?columns=id,name&limit=10
Returns
request object that possibly completes later on. Caller does not need worry about the lifetime of the object, it will destroy itself once ready

◆ destroyContentProvider()

void kanzi::connect::ContentManager::destroyContentProvider ( ContentProvider provider)
protected

Uninitializes and destroys an existing content provider.

Parameters
providerContent provider to destroy.

◆ getAllKnownContentProviders()

vector<ContentProviderSharedPtr> kanzi::connect::ContentManager::getAllKnownContentProviders ( )

Retrieves all known content providers.

Returns
vector of content providers.

◆ getContentProvider()

virtual ContentProviderCollectionSharedPtr kanzi::connect::ContentManager::getContentProvider ( )
overridevirtual

Returns the content provider collection that contains all registered content on server.

Returns
Collection of content providers.

◆ getPendingQuery()

shared_ptr<RemoteQuery> kanzi::connect::ContentManager::getPendingQuery ( unsigned int  queryId) const

Retrieves pending remote query by it's unique id.

Parameters
queryIdId of the query to retrieve.
Returns
Resulting query object.

◆ getProxyWorkQueue()

WorkQueueInterface* kanzi::connect::ContentManager::getProxyWorkQueue ( )

Returns a proxied work queue instance that can be used by composited classes to to assign work to this service.

Note
Returned interface will become invalid immediately when uninitialize() gets called for this Service.
Returns
pointer to interface that can be used dispatch event(s) to this particular service.

◆ getWorkQueue()

WorkQueueInterface* kanzi::connect::ContentManager::getWorkQueue ( ) const

Access to signal that allows to invoke work().

Returns
The signal.

◆ handleContentSchemaRequest()

string kanzi::connect::ContentManager::handleContentSchemaRequest ( const string &  id)
protected

Handles a content provider specific schema request.

Parameters
idthe content provider identifier as uri. Example com.rightware.content/songs
Returns
xml schema

◆ initialize()

virtual void kanzi::connect::ContentManager::initialize ( InterfaceDomainBase domain,
ContentClientSharedPtr  contentClient,
WorkQueueInterface workQueue 
)
overridevirtual

◆ initializeFilePathRegistrations()

void kanzi::connect::ContentManager::initializeFilePathRegistrations ( )
protected

Initialize file provider functionality.

◆ instantiateRegisteredContentProviders()

void kanzi::connect::ContentManager::instantiateRegisteredContentProviders ( )

Instantiates all registered content providers that has not yet been created.

Note
This should not be required to call at runtime but is a conviency method invoked when Kanzi Studio needs to know all possible content providers.

◆ invalidateContent()

virtual void kanzi::connect::ContentManager::invalidateContent ( const string &  uri,
const ContentInvalidationInfo &  data 
)
overridevirtual

See ContentInterface::invalidateContent.

◆ notifyChanged()

virtual void kanzi::connect::ContentManager::notifyChanged ( const string &  uri)
overridevirtual

See ContentInterface::notifyChanged.

◆ onReleaseSession()

virtual void kanzi::connect::ContentManager::onReleaseSession ( AbstractSessionSharedPtr  session)
overrideprotectedvirtual

◆ registerAndCreateContentProvider()

template<class _T >
shared_ptr<_T> kanzi::connect::ContentManager::registerAndCreateContentProvider ( const string &  domain,
shared_ptr< ContentProviderCreator creator 
)
inline

Same as registerContentProvider but also creates the provider immediately.

Parameters
domainDomain URI that is covered by this content provider.
creatorFactory creator function that instantiates such content provider type.
Returns
created content provider instance

◆ registerContent()

virtual void kanzi::connect::ContentManager::registerContent ( const string &  uri,
const string &  schema 
)
overridevirtual

See ContentInterface::registerContent.

◆ registerContentProvider()

void kanzi::connect::ContentManager::registerContentProvider ( const string &  domain,
shared_ptr< ContentProviderCreator creator 
)

Registers content provider to system.

Parameters
domainDomain URI that is covered by this content provider.
creatorFactory creator function that instantiates such content provider type.

◆ removeContentProvider()

void kanzi::connect::ContentManager::removeContentProvider ( ContentProviderSharedPtr  contentProvider)

Removes existing content provider from system.

Parameters
contentProviderContent provider instance to remove.

◆ removePendingQuery()

void kanzi::connect::ContentManager::removePendingQuery ( unsigned int  queryId)

Unregisters remote query from the system.

Should be called when query is finished.

Parameters
queryIdUnique identifier for the query.

◆ respond()

virtual void kanzi::connect::ContentManager::respond ( const int &  uid,
const QueryResponseData &  arg 
)
overridevirtual

See ContentInterface::respond.

◆ returnCredits()

virtual void kanzi::connect::ContentManager::returnCredits ( const string &  uri,
const int &  credits 
)
overridevirtual

See ContentInterface::returnCredits.

◆ subscribe() [1/3]

virtual void kanzi::connect::ContentManager::subscribe ( const QueryArgumentData &  arg)
overridevirtual

See ContentInterface::subscribe.

◆ subscribe() [2/3]

virtual bool kanzi::connect::ContentManager::subscribe ( const QueryArgumentData &  arg,
ContentResultCallback  callback,
ContentInvalidationCallback  invalidationCallback 
)
virtual

Subscribe to content, allows to receive a callback when content subscription is updated.

◆ subscribe() [3/3]

virtual bool kanzi::connect::ContentManager::subscribe ( shared_ptr< ContentServiceConcept::Session >  session,
const QueryArgumentData &  arg,
ContentResultCallback  callback,
ContentInvalidationCallback  invalidationCallback 
)
virtual

◆ subscribeRuntimeData() [1/3]

virtual string kanzi::connect::ContentManager::subscribeRuntimeData ( const string &  uri)
overridevirtual

No description given.

◆ subscribeRuntimeData() [2/3]

virtual string kanzi::connect::ContentManager::subscribeRuntimeData ( const string &  uri,
RuntimeDataContentResultCallback  callback 
)
virtual

Subscribes to runtime data.

Parameters
uriThe URI at which to subscribe.
callbackThe callback to invoke on subscription.
Returns
Specification of the routing rules in XML format.

◆ subscribeRuntimeData() [3/3]

virtual string kanzi::connect::ContentManager::subscribeRuntimeData ( shared_ptr< ContentServiceConcept::Session >  session,
const string &  uri,
RuntimeDataContentResultCallback  callback 
)
virtual

Subscribes to runtime data.

Parameters
sessionsession for runtime data
uriThe URI at which to subscribe.
callbackThe callback to invoke on subscription.
Returns
Specification of the routing rules in XML format.

◆ uninitialize()

virtual void kanzi::connect::ContentManager::uninitialize ( )
overridevirtual

◆ uninitializeFilePathRegistrations()

void kanzi::connect::ContentManager::uninitializeFilePathRegistrations ( )
protected

Uninitialize file provider functionality.

◆ unregisterContent()

virtual void kanzi::connect::ContentManager::unregisterContent ( const string &  uri)
overridevirtual

See ContentInterface::unregisterContent.

◆ unregisterRemoteContents() [1/2]

void kanzi::connect::ContentManager::unregisterRemoteContents ( )
protected

Cleans up remote content providers away from the system when session is terminated for a client.

Parameters
sessionSession that was terminated.

◆ unregisterRemoteContents() [2/2]

void kanzi::connect::ContentManager::unregisterRemoteContents ( shared_ptr< ContentServiceConcept::Session >  session)
protected

◆ unsubscribe() [1/2]

virtual void kanzi::connect::ContentManager::unsubscribe ( const string &  uri)
overridevirtual

See ContentInterface::unsubscribe.

◆ unsubscribe() [2/2]

virtual void kanzi::connect::ContentManager::unsubscribe ( shared_ptr< ContentServiceConcept::Session >  session,
const string &  uri 
)
virtual

◆ useDiagnosticsManager()

void kanzi::connect::ContentManager::useDiagnosticsManager ( DiagnosticsManagerSharedPtr  diagnostics)

Give a diagnostics manager functionality for content manager to use.

◆ work()

virtual void kanzi::connect::ContentManager::work ( ConnectWorkItemSharedPtr  work)
overridevirtual

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