ASSERT(!path.empty());
if (path[0] == m_Key) {
+ if (!m_Value.IsObjectType<ExpressionList>())
+ BOOST_THROW_EXCEPTION(std::invalid_argument("Specified path does not exist."));
+
+ ExpressionList::Ptr exprl = m_Value;
+
if (path.size() == 1) {
- result->AddExpression(*this);
+ result->AddExpression(Expression("", OperatorExecute, exprl, m_DebugInfo));
return;
}
- if (!m_Value.IsObjectType<ExpressionList>())
- BOOST_THROW_EXCEPTION(std::invalid_argument("Specified path does not exist."));
-
- ExpressionList::Ptr exprl = m_Value;
std::vector<String> sub_path(path.begin() + 1, path.end());
exprl->Extract(sub_path, result);
} else if (m_Operator == OperatorExecute) {
{
ASSERT(!OwnsLock());
+ bool reachable = IsReachable();
+
{
ObjectLock olock(this);
SetLastState(GetState());
SetLastStateType(GetLastStateType());
+ SetLastReachable(reachable);
}
- SetLastReachable(IsReachable());
-
/* keep track of scheduling info in case the check type doesn't provide its own information */
Dictionary::Ptr checkInfo = boost::make_shared<Dictionary>();
checkInfo->Set("schedule_start", GetNextCheck());