Robot Raconteur Core C++ Library
Loading...
Searching...
No Matches
RobotRaconteur::SyncGenerator< Return, void > Class Template Referenceabstract

Helper class for synchronous service generators. More...

#include <Generator.h>

Inheritance diagram for RobotRaconteur::SyncGenerator< Return, void >:
RobotRaconteur::Generator< Return, void > RobotRaconteur::Generator< Return, void >

Public Member Functions

RR_OVIRTUAL Return Next () RR_OVERRIDE=0
 Advance the generator.
RR_OVIRTUAL void AsyncNext (boost::function< void(const Return &, const boost::shared_ptr< RobotRaconteurException > &err)> handler, int32_t timeout=RR_TIMEOUT_INFINITE) RR_OVERRIDE
 Asynchronously advance the generator.
RR_OVIRTUAL void Abort () RR_OVERRIDE=0
 Abort the generator.
RR_OVIRTUAL void AsyncAbort (boost::function< void(const boost::shared_ptr< RobotRaconteurException > &)> handler, int32_t timeout=RR_TIMEOUT_INFINITE) RR_OVERRIDE
 Asynchronously abort the generator.
RR_OVIRTUAL void Close () RR_OVERRIDE=0
 Close the generator.
RR_OVIRTUAL void AsyncClose (boost::function< void(const boost::shared_ptr< RobotRaconteurException > &)> handler, int32_t timeout=RR_TIMEOUT_INFINITE) RR_OVERRIDE
 Asynchronously closes the generator.
virtual bool TryNext (const void &v, Return &ret)
 Try to advance the generator. Return false if no more values are available.
virtual void AsyncAbort (boost::function< void(const boost::shared_ptr< RobotRaconteurException > &err)> handler, int32_t timeout=RR_TIMEOUT_INFINITE)=0
 Asynchronously abort the generator.
virtual void AsyncClose (boost::function< void(const boost::shared_ptr< RobotRaconteurException > &err)> handler, int32_t timeout=RR_TIMEOUT_INFINITE)=0
 Asynchronously closes the generator.
virtual bool TryNext (Return &ret)
 Try to advance the generator. Return false if no more values are available.
virtual std::vector< Return > NextAll ()
 Automatically call Next() repeatedly and return std::vector of results.

Detailed Description

template<typename Return>
class RobotRaconteur::SyncGenerator< Return, void >

Helper class for synchronous service generators.

By default, services will call AsyncNext(), AsyncClose(), and AsyncAbort(). This class will redirect these calls to synchronous Next(), Close, and Abort(). Inherit from SyncGenerator for this behavior.

Member Function Documentation

◆ Abort()

template<typename Return>
RR_OVIRTUAL void RobotRaconteur::SyncGenerator< Return, void >::Abort ( )
pure virtual

Abort the generator.

Aborts and destroys the generator. This is assumed to be an error condition. Next() should throw OperationAbortedException if called after Abort(). Any ongoing operations should be terminated with an error condition, for example a moving robot should be immediately halted.

Implements RobotRaconteur::Generator< Return, void >.

◆ AsyncAbort() [1/2]

template<typename Return>
RR_OVIRTUAL void RobotRaconteur::SyncGenerator< Return, void >::AsyncAbort ( boost::function< void(const boost::shared_ptr< RobotRaconteurException > &)> handler,
int32_t timeout = RR_TIMEOUT_INFINITE )
inline

Asynchronously abort the generator.

Same as Abort() but returns asynchronously.

Parameters
handlerThe handler to call when abort is complete
timeoutTimeout in milliseconds, or RR_TIMEOUT_INFINITE for no timeout.

◆ AsyncAbort() [2/2]

virtual void RobotRaconteur::Generator< Return, void >::AsyncAbort ( boost::function< void(const boost::shared_ptr< RobotRaconteurException > &err)> handler,
int32_t timeout = RR_TIMEOUT_INFINITE )
pure virtual

Asynchronously abort the generator.

Same as Abort() but returns asynchronously.

Parameters
handlerThe handler to call when abort is complete
timeoutTimeout in milliseconds, or RR_TIMEOUT_INFINITE for no timeout.

◆ AsyncClose() [1/2]

template<typename Return>
RR_OVIRTUAL void RobotRaconteur::SyncGenerator< Return, void >::AsyncClose ( boost::function< void(const boost::shared_ptr< RobotRaconteurException > &)> handler,
int32_t timeout = RR_TIMEOUT_INFINITE )
inline

Asynchronously closes the generator.

Same as Close() but returns asynchronously.

Parameters
handlerThe handler to call when close is complete
timeoutTimeout in milliseconds, or RR_TIMEOUT_INFINITE for no timeout.

◆ AsyncClose() [2/2]

virtual void RobotRaconteur::Generator< Return, void >::AsyncClose ( boost::function< void(const boost::shared_ptr< RobotRaconteurException > &err)> handler,
int32_t timeout = RR_TIMEOUT_INFINITE )
pure virtual

Asynchronously closes the generator.

Same as Close() but returns asynchronously.

Parameters
handlerThe handler to call when close is complete
timeoutTimeout in milliseconds, or RR_TIMEOUT_INFINITE for no timeout.

◆ AsyncNext()

template<typename Return>
RR_OVIRTUAL void RobotRaconteur::SyncGenerator< Return, void >::AsyncNext ( boost::function< void(const Return &, const boost::shared_ptr< RobotRaconteurException > &err)> handler,
int32_t timeout = RR_TIMEOUT_INFINITE )
inlinevirtual

Asynchronously advance the generator.

Same as Next() but returns asynchronously.

Parameters
vParameter to pass to generator
handlerA handler function to receive the return value or an exception
timeoutTimeout in milliseconds, or RR_TIMEOUT_INFINITE for no timeout.

Implements RobotRaconteur::Generator< Return, void >.

◆ Close()

template<typename Return>
RR_OVIRTUAL void RobotRaconteur::SyncGenerator< Return, void >::Close ( )
pure virtual

Close the generator.

Closes the generator. Closing the generator terminates iteration and destroys the generator. This operation cleanly closes the generator, and is not considered to be an error condition. Next() should throw StopIterationException if called after Close().

Implements RobotRaconteur::Generator< Return, void >.

◆ Next()

template<typename Return>
RR_OVIRTUAL Return RobotRaconteur::SyncGenerator< Return, void >::Next ( )
pure virtual

Advance the generator.

Next() advances the generator to retrieve the next value. This version of Generator does not include passing a parameter to the generator.

Returns
Return Return value from generator

Implements RobotRaconteur::Generator< Return, void >.

◆ NextAll()

template<typename Return>
virtual std::vector< Return > RobotRaconteur::Generator< Return, void >::NextAll ( )
inlinevirtualinherited

Automatically call Next() repeatedly and return std::vector of results.

Returns
std::vector<Return> All values returned by generator Next()

◆ TryNext() [1/2]

template<typename Return>
virtual bool RobotRaconteur::Generator< Return, void >::TryNext ( Return & ret)
inlinevirtualinherited

Try to advance the generator. Return false if no more values are available.

TryNext() is similar to Next() but returns false if no more values are available. This version of TryNext() does not include passing a parameter to the generator.

Parameters
retReturn value from generator
Returns
true ret is valid
false ret is not valid. No more values are available.

◆ TryNext() [2/2]

virtual bool RobotRaconteur::Generator< Return, void >::TryNext ( const void & v,
Return & ret )
inlinevirtual

Try to advance the generator. Return false if no more values are available.

TryNext() is similar to Next() but returns false if no more values are available. This is useful for generators that may not have a fixed number of values.

Parameters
vParameter to pass to generator
retReturn value from generator
Returns
true ret is valid
false ret is not valid. No more values are available.

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