Ark Server API (ASE) - Wiki
Loading...
Searching...
No Matches
Poco::ActiveMethod< ResultType, ArgType, OwnerType, StarterType > Class Template Reference

#include <ActiveMethod.h>

Public Types

typedef ResultType(OwnerType::* Callback) (const ArgType &)
 
typedef ActiveResult< ResultType > ActiveResultType
 
typedef ActiveRunnable< ResultType, ArgType, OwnerType > ActiveRunnableType
 

Public Member Functions

 ActiveMethod (OwnerType *pOwner, Callback method)
 
ActiveResultType operator() (const ArgType &arg)
 Invokes the ActiveMethod.
 
 ActiveMethod (const ActiveMethod &other)
 
ActiveMethodoperator= (const ActiveMethod &other)
 
void swap (ActiveMethod &other)
 

Private Member Functions

 ActiveMethod ()
 

Private Attributes

OwnerType * _pOwner
 
Callback _method
 

Detailed Description

template<class ResultType, class ArgType, class OwnerType, class StarterType = ActiveStarter<OwnerType>>
class Poco::ActiveMethod< ResultType, ArgType, OwnerType, StarterType >

An active method is a method that, when called, executes in its own thread. ActiveMethod's take exactly one argument and can return a value. To pass more than one argument to the method, use a struct. The following example shows how to add an ActiveMethod to a class:

class ActiveObject
{
public:
    ActiveObject():
        exampleActiveMethod(this, &ActiveObject::exampleActiveMethodImpl)
    {
    }

    ActiveMethod<std::string, std::string, ActiveObject> exampleActiveMethod;

protected:
    std::string exampleActiveMethodImpl(const std::string& arg)
    {
        ...
    }
};

And following is an example that shows how to invoke an ActiveMethod.

ActiveObject myActiveObject;
ActiveResult<std::string> result = myActiveObject.exampleActiveMethod("foo");
...
result.wait();
std::cout << result.data() << std::endl;

The way an ActiveMethod is started can be changed by passing a StarterType template argument with a corresponding class. The default ActiveStarter starts the method in its own thread, obtained from a thread pool.

For an alternative implementation of StarterType, see ActiveDispatcher.

For methods that do not require an argument or a return value, the Void class can be used.

Definition at line 32 of file ActiveMethod.h.

Member Typedef Documentation

◆ ActiveResultType

template<class ResultType , class ArgType , class OwnerType , class StarterType = ActiveStarter<OwnerType>>
typedef ActiveResult<ResultType> Poco::ActiveMethod< ResultType, ArgType, OwnerType, StarterType >::ActiveResultType

Definition at line 76 of file ActiveMethod.h.

◆ ActiveRunnableType

template<class ResultType , class ArgType , class OwnerType , class StarterType = ActiveStarter<OwnerType>>
typedef ActiveRunnable<ResultType, ArgType, OwnerType> Poco::ActiveMethod< ResultType, ArgType, OwnerType, StarterType >::ActiveRunnableType

Definition at line 77 of file ActiveMethod.h.

◆ Callback

template<class ResultType , class ArgType , class OwnerType , class StarterType = ActiveStarter<OwnerType>>
typedef ResultType(OwnerType::* Poco::ActiveMethod< ResultType, ArgType, OwnerType, StarterType >::Callback) (const ArgType &)

Definition at line 75 of file ActiveMethod.h.

Constructor & Destructor Documentation

◆ ActiveMethod() [1/3]

template<class ResultType , class ArgType , class OwnerType , class StarterType = ActiveStarter<OwnerType>>
Poco::ActiveMethod< ResultType, ArgType, OwnerType, StarterType >::ActiveMethod ( OwnerType * pOwner,
Callback method )
inline

Definition at line 79 of file ActiveMethod.h.

◆ ActiveMethod() [2/3]

template<class ResultType , class ArgType , class OwnerType , class StarterType = ActiveStarter<OwnerType>>
Poco::ActiveMethod< ResultType, ArgType, OwnerType, StarterType >::ActiveMethod ( const ActiveMethod< ResultType, ArgType, OwnerType, StarterType > & other)
inline

Definition at line 96 of file ActiveMethod.h.

◆ ActiveMethod() [3/3]

template<class ResultType , class ArgType , class OwnerType , class StarterType = ActiveStarter<OwnerType>>
Poco::ActiveMethod< ResultType, ArgType, OwnerType, StarterType >::ActiveMethod ( )
private

Member Function Documentation

◆ operator()()

template<class ResultType , class ArgType , class OwnerType , class StarterType = ActiveStarter<OwnerType>>
ActiveResultType Poco::ActiveMethod< ResultType, ArgType, OwnerType, StarterType >::operator() ( const ArgType & arg)
inline

Invokes the ActiveMethod.

Definition at line 87 of file ActiveMethod.h.

◆ operator=()

template<class ResultType , class ArgType , class OwnerType , class StarterType = ActiveStarter<OwnerType>>
ActiveMethod & Poco::ActiveMethod< ResultType, ArgType, OwnerType, StarterType >::operator= ( const ActiveMethod< ResultType, ArgType, OwnerType, StarterType > & other)
inline

Definition at line 102 of file ActiveMethod.h.

◆ swap()

template<class ResultType , class ArgType , class OwnerType , class StarterType = ActiveStarter<OwnerType>>
void Poco::ActiveMethod< ResultType, ArgType, OwnerType, StarterType >::swap ( ActiveMethod< ResultType, ArgType, OwnerType, StarterType > & other)
inline

Definition at line 109 of file ActiveMethod.h.

Member Data Documentation

◆ _method

template<class ResultType , class ArgType , class OwnerType , class StarterType = ActiveStarter<OwnerType>>
Callback Poco::ActiveMethod< ResultType, ArgType, OwnerType, StarterType >::_method
private

Definition at line 119 of file ActiveMethod.h.

◆ _pOwner

template<class ResultType , class ArgType , class OwnerType , class StarterType = ActiveStarter<OwnerType>>
OwnerType* Poco::ActiveMethod< ResultType, ArgType, OwnerType, StarterType >::_pOwner
private

Definition at line 118 of file ActiveMethod.h.


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