本文整理汇总了C++中Operation::isDefaultSerialno方法的典型用法代码示例。如果您正苦于以下问题:C++ Operation::isDefaultSerialno方法的具体用法?C++ Operation::isDefaultSerialno怎么用?C++ Operation::isDefaultSerialno使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Operation
的用法示例。
在下文中一共展示了Operation::isDefaultSerialno方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: RelayOperation
/// \brief Handle a relay operation
void Entity::RelayOperation(const Operation & op, OpVector & res)
{
if (op->getArgs().empty()) {
log(ERROR, "Entity::RelayOperation no args.");
return;
}
Operation relayedOp = Atlas::Objects::smart_dynamic_cast<Operation>(
op->getArgs().front());
if (!relayedOp.isValid()) {
log(ERROR,
"Entity::RelayOperation first arg is not an operation.");
return;
}
if (op->isDefaultSerialno()) {
log(ERROR, "Entity::RelayOperation no serial number.");
return;
}
//Add a sight of the operation
Sight sight;
sight->setArgs1(relayedOp);
Atlas::Objects::Operation::Generic responseOp;
responseOp->setType("relay", Atlas::Objects::Operation::RELAY_NO);
responseOp->setArgs1(sight);
responseOp->setTo(op->getFrom());
res.push_back(responseOp);
//Make sure that the contained op is addressed to the entity
relayedOp->setTo(getId());
operation(relayedOp, res);
}
示例2: error
/// \brief Report an Error.
///
/// The error reported is noted in the log, and an error operation is
/// genereated.
/// @param op The operation that caused the error.
/// @param errstring A message describing the error.
/// @param res The resulting error operation is returned here.
/// @param to The error operation should be directed to this ID.
void Router::error(const Operation & op,
const std::string & errstring,
OpVector & res,
const std::string & to) const
{
Atlas::Objects::Operation::Error e;
log(NOTICE, String::compose("ERROR generated by %1 with message [%2]",
getId(), errstring));
std::vector<Atlas::Objects::Root> & args = e->modifyArgs();
Atlas::Objects::Entity::Anonymous arg1;
arg1->setAttr("message", errstring);
args.push_back(arg1);
args.push_back(op);
if (!to.empty()) {
if (!op->isDefaultSerialno()) {
e->setRefno(op->getSerialno());
}
e->setTo(to);
}
res.push_back(e);
}
示例3: createObject
void Admin::createObject(const std::string & type_str,
const Root & arg,
const Operation & op,
OpVector & res)
{
const std::string & objtype = arg->getObjtype();
if (objtype == "class" || objtype == "op_definition") {
// New entity type
if (!arg->hasAttrFlag(Atlas::Objects::ID_FLAG)) {
error(op, "Set arg has no id.", res, getId());
return;
}
const std::string & id = arg->getId();
if (Inheritance::instance().hasClass(id)) {
error(op, "Attempt to install type that already exists", res,
getId());
return;
}
const Root & o = Inheritance::instance().getClass(type_str);
if (!o.isValid()) {
error(op, compose("Attempt to install type with non-existant "
"parent \"%1\"", type_str), res, getId());
return;
}
if (Ruleset::instance()->installRule(id, "unknown", arg) == 0) {
Info info;
info->setTo(getId());
info->setArgs1(arg);
res.push_back(info);
} else {
error(op, "Installing new type failed", res, getId());
}
} else if (type_str == "juncture") {
std::string junc_id;
long junc_iid = newId(junc_id);
if (junc_iid < 0) {
error(op, "Juncture failed as no ID available", res, getId());
return;
}
Juncture * j = new Juncture(m_connection, junc_id, junc_iid);
m_connection->addObject(j);
m_connection->m_server.addObject(j);
Anonymous info_arg;
j->addToEntity(info_arg);
Info info;
info->setTo(getId());
info->setArgs1(info_arg);
if (!op->isDefaultSerialno()) {
info->setRefno(op->getSerialno());
}
res.push_back(info);
} else {
Account::createObject(type_str, arg, op, res);
}
}
示例4: sendOperation
void EntityImporterBase::sendOperation(const Operation& op)
{
if (!op->isDefaultSerialno()) {
sigc::slot<void, const Operation&> slot = sigc::mem_fun(*this, &EntityImporterBase::operation);
sendAndAwaitResponse(op, slot);
} else {
send(op);
}
}
示例5: externalOperation
void Entity::externalOperation(const Operation & op, Link &)
{
OpVector res;
operation(op, res);
OpVector::const_iterator Iend = res.end();
for (OpVector::const_iterator I = res.begin(); I != Iend; ++I) {
if (!op->isDefaultSerialno()) {
(*I)->setRefno(op->getSerialno());
}
sendWorld(*I);
}
}
示例6: LoginOperation
void Juncture::LoginOperation(const Operation & op, OpVector & res)
{
log(INFO, "Juncture got login");
const std::vector<Root> & args = op->getArgs();
if (args.empty()) {
error(op, "No argument to connect op", res, getId());
return;
}
const Root & arg = args.front();
Element username_attr;
if (arg->copyAttr("username", username_attr) != 0 || !username_attr.isString()) {
error(op, "Argument to connect op has no username", res, getId());
return;
}
const std::string & username = username_attr.String();
Element password_attr;
if (arg->copyAttr("password", password_attr) != 0 || !password_attr.isString()) {
error(op, "Argument to connect op has no password", res, getId());
return;
}
const std::string & password = password_attr.String();
if (m_peer == 0) {
error(op, "Juncture not connected", res, getId());
return;
}
assert(m_socket == 0);
if (m_peer->getAuthState() != PEER_INIT) {
error(op, "Juncture not ready", res, getId());
return;
}
Anonymous account;
account->setAttr("username", username);
account->setAttr("password", password);
Login l;
l->setArgs1(account);
if (!op->isDefaultSerialno()) {
l->setSerialno(op->getSerialno());
}
// Send the login op
m_peer->send(l);
m_peer->setAuthState(PEER_AUTHENTICATING);
}
示例7: externalOperation
void Juncture::externalOperation(const Operation & op, Link &)
{
log(ERROR, String::compose("%1 called", __PRETTY_FUNCTION__));
assert(m_connection != 0);
OpVector reply;
long serialno = op->getSerialno();
operation(op, reply);
OpVector::const_iterator Iend = reply.end();
for(OpVector::const_iterator I = reply.begin(); I != Iend; ++I) {
if (!op->isDefaultSerialno()) {
// Should we respect existing refnos?
if ((*I)->isDefaultRefno()) {
(*I)->setRefno(serialno);
}
}
// FIXME detect socket failure here
m_connection->send(*I);
}
}
示例8: buildError
void Router::buildError(const Operation & op,
const std::string & errstring,
const Operation & e,
const std::string & to) const
{
std::vector<Atlas::Objects::Root> & args = e->modifyArgs();
Atlas::Objects::Entity::Anonymous arg1;
arg1->setAttr("message", errstring);
args.push_back(arg1);
args.push_back(op);
if (!to.empty()) {
if (!op->isDefaultSerialno()) {
e->setRefno(op->getSerialno());
}
e->setTo(to);
}
}