1
|
#include <apt_framework/orchestrate.h>
|
2
|
class ExampleOperator : public APT_Operator
{
|
4
|
APT_DECLARE_RTTI(ExampleOperator);
|
5
|
APT_DECLARE_PERSISTENT(ExampleOperator);
public:
ExampleOperator();
|
9
11
|
protected:
virtual APT_Status describeOperator();
virtual APT_Status runLocally();
virtual APT_Status initializeFromArgs_(const APT_PropertyList &args,
APT_Operator::InitializeContext context);
};
|
12
|
#define ARGS_DESC "{}"
|
13
|
APT_DEFINE_OSH_NAME(ExampleOperator, exampleOp, ARGS_DESC);
|
14
15
|
APT_IMPLEMENT_RTTI_ONEBASE(ExampleOperator, APT_Operator);
APT_IMPLEMENT_PERSISTENT(ExampleOperator);
|
16
|
ExampleOperator::ExampleOperator()
{}
|
18
|
APT_Status ExampleOperator::initializeFromArgs_(const
APT_PropertyList &args, APT_Operator::InitializeContext
context)
{
return APT_StatusOk;
}
|
22
|
void ExampleOperator::serialize(APT_Archive& archive, APT_UInt8)
{}
|
24
|
APT_Status ExampleOperator::describeOperator()
{
setKind(APT_Operator::eParallel);
setInputDataSets(1);
setOutputDataSets(1);
setInputInterfaceSchema("record (iField:int32; sField:string)", 0);
setOutputInterfaceSchema("record (iField:int32; sField:string)",0);
return APT_StatusOk;
}
|
33
|
APT_Status ExampleOperator::runLocally()
{
APT_InputCursor inCur;
APT_OutputCursor outCur;
setupInputCursor(&inCur, 0);
setupOutputCursor(&outCur, 0);
APT_InputAccessorToInt32 iFieldInAcc("iField", &inCur);
APT_InputAccessorToString sFieldInAcc("sField", &inCur);
APT_OutputAccessorToInt32 iFieldOutAcc("iField", &outCur);
APT_OutputAccessorToString sFieldOutAcc("sField", &outCur);
while (inCur.getRecord())
{
cout << "*sFieldInAcc =" << *sFieldInAcc << endl;
cout << "*iFieldInAcc =" << *iFieldInAcc << endl;
*sFieldOutAcc = "XXXXX" + *sFieldInAcc;
*iFieldOutAcc = *iFieldInAcc + 100;
cout << "*sFieldOutAcc =" << *sFieldOutAcc << endl;
cout << "*iFieldOutAcc =" << *iFieldOutAcc << endl;
outCur.putRecord();
}
return APT_StatusOk;
}
|