blob: 63b1acec77e8c8fa9bc04b77e848e1a3509a16a1 [file] [log] [blame]
/*
* Copyright (c) 2019, Infosys Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include <iostream>
#include "controlBlock.h"
#include "actionTable.h"
#include "state.h"
#include "log.h"
using namespace std;
namespace SM
{
ActionTable::ActionTable()
:nextStatep(NULL)
{
}
ActionTable::~ActionTable()
{
}
ActStatus ActionTable::executeActions(ControlBlock& cb)
{
ActStatus rt = PROCEED;
for(auto it = actionsQ.begin(); it != actionsQ.end(); it++)
{
ActStatus ret = (*it)(cb);
if(PROCEED != ret)
{
// TODO: error handling
break;
}
}
if (PROCEED == rt &&
nextStatep != NULL)
{
cb.setNextState(nextStatep);
}
return rt;
}
void ActionTable::addAction(ActionPointer act)
{
actionsQ.push_back(act);
}
void ActionTable::setNextState(State* st)
{
nextStatep = st;
}
void ActionTable::display()
{
if(NULL != nextStatep)
{
log_msg(LOG_DEBUG,"\nnext State : - %d \n",nextStatep->getStateId());
}
}
}