GuardDataMixer is the safe access entry for abiDataMixer.
Applications can use it to make C-based APIs safer. it would manage abiRefDataMixer automatically. with that, App user do not need to refCopy_i or destroy abiRefDataMixer manually.
For example: abiRefDataMixer* rawRef = creator(); GuardDataMixer guardMixer(rawRef, true); // take the ownership of rawRef guardMixer.setUserData(userdata, [](void*){ ...free... }); guardMixer.setErrorCallback([](ErrCode c, const char* msg){ stderr << msg; }); ErrCode c = guardMixer.start(config, path); DS_ASSERT(isGood(c)); c = guardMixer.start(config, path); // invoke abiDataMixer::start_i(...) GuardDataMap inputData = ...; // prepare input data // invoke abiDataMixer::process_i(...) c = guardMixer.process(inputData, [](ErrCode c, const abiRefDataMap* d){ GuardDataMap outputData(<em>d); // output data processing std::cout << "output data processing starts" << std::endl; }, [](ErrCode c, const abiRefDataMap d){ GuardDataMap doneData(*d); std::cout << "input data consumed" << std::endl; }); DS_ASSERT(isGood(c)); //... wait for all data processed before stop c = guardMixer.flush(); c = guardMixer.stop(); // invoke abiDataMixer::stop_i(...) guardMixer.reset(); // destroy abiRefDataMixer, when all reference // destroyed, abiDataMixer would be freed.
Definition at line 55 of file datamixer.hpp.
Public Types | |
using | abiRefType = abiRefT< abiDataMixer > |
Public Member Functions | |
template<typename... Args> | |
GuardDataMixer (Args &&... args) | |
~GuardDataMixer ()=default | |
ErrCode | process (const int portId, GuardDataMap datamap, abiOnDataCB::CppFunc inputConsumedCB) |
ErrCode | setOutputCb (abiOnDataCB::CppFunc outputDataCB) |
ErrCode | updateInput (int portId, MixerUpdate updateType) |
void | setUserData (void *data, DelF delF) |
virtual void * | getUserData () const |
void | setErrorCallback (abiErrorCB::CppFunc errCb) |
ErrCode | start (const std::string &content, const std::string &path="") |
ErrCode | flush () |
ErrCode | stop () |
State | state () const |
std::string | getCaps (CapsPort port) |
std::string | getOutputCaps () |
std::string | getInputCaps () |
GuardTy | cast () |
abiDataMixer * | ptr () const |
abiDataMixer * | operator-> () const |
operator bool () const | |
operator ShrdPtr< abiDataMixer > () | |
abiRefT< abiDataMixer > * | release () |
void | reset (abiRefT< abiDataMixer > *abiref=nullptr) |
abiRefT< abiDataMixer > * | abiRef () const |
|
inherited |
|
inline |
Definition at line 60 of file datamixer.hpp.
|
default |
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
Definition at line 76 of file dataprocess.hpp.
|
inlineinherited |
Definition at line 94 of file dataprocess.hpp.
|
inlineinherited |
Definition at line 101 of file dataprocess.hpp.
|
inlineinherited |
Definition at line 100 of file dataprocess.hpp.
|
inlinevirtualinherited |
Definition at line 55 of file dataprocess.hpp.
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
|
inline |
Definition at line 65 of file datamixer.hpp.
References ds3d::GuardRef< ref, >::abiRef(), ds3d::GuardRef< abiCB >::abiRef(), DS_ASSERT, ds3d::abiDataMixer::process_i(), ds3d::GuardDataT< abiDataMixer >::ptr(), and ds3d::GuardCB< abiCB >::setFn().
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
Definition at line 62 of file dataprocess.hpp.
|
inline |
Definition at line 79 of file datamixer.hpp.
References ds3d::GuardRef< abiCB >::abiRef(), DS_ASSERT, ds3d::GuardDataT< abiDataMixer >::ptr(), ds3d::GuardCB< abiCB >::setFn(), and ds3d::abiDataMixer::setOutputCb_i().
|
inlineinherited |
Definition at line 44 of file dataprocess.hpp.
|
inlineinherited |
Definition at line 70 of file dataprocess.hpp.
|
inlineinherited |
Definition at line 88 of file dataprocess.hpp.
|
inlineinherited |
Definition at line 82 of file dataprocess.hpp.
|
inline |
Definition at line 91 of file datamixer.hpp.
References ds3d::GuardDataT< abiDataMixer >::ptr(), and ds3d::abiDataMixer::updateInput_i().