本文整理汇总了C++中PyTuple::Dump方法的典型用法代码示例。如果您正苦于以下问题:C++ PyTuple::Dump方法的具体用法?C++ PyTuple::Dump怎么用?C++ PyTuple::Dump使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类PyTuple
的用法示例。
在下文中一共展示了PyTuple::Dump方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Decode
bool PyCallStream::Decode(const std::string &type, PyTuple *&in_payload) {
PyTuple *payload = in_payload; //consume
in_payload = NULL;
PySafeDecRef(arg_tuple);
PySafeDecRef(arg_dict);
arg_tuple = NULL;
arg_dict = NULL;
if(type != "macho.CallReq") {
codelog(NET__PACKET_ERROR, "failed: packet payload has unknown string type '%s'", type.c_str());
PyDecRef(payload);
return false;
}
if (payload->items.size() != 1) {
codelog(NET__PACKET_ERROR, "invalid tuple length %lu", payload->items.size());
PyDecRef(payload);
return false;
}
if (!payload->items[0]->IsTuple()) {
codelog(NET__PACKET_ERROR, "non tuple payload[0]");
PyDecRef(payload);
return false;
}
PyTuple *payload2 = (PyTuple *) payload->items[0];
if(payload2->items.size() != 2) {
codelog(NET__PACKET_ERROR, "invalid tuple2 length %lu", payload2->items.size());
PyDecRef(payload);
return false;
}
//decode inner payload tuple
//ignore tuple 0, it should be an int, dont know what it is
if(!payload2->items[1]->IsSubStream()) {
codelog(NET__PACKET_ERROR, "non-substream type");
PyDecRef(payload);
return false;
}
PySubStream *ss = (PySubStream *) payload2->items[1];
ss->DecodeData();
if(ss->decoded() == NULL) {
codelog(NET__PACKET_ERROR, "Unable to decode call stream");
PyDecRef(payload);
return false;
}
if(!ss->decoded()->IsTuple()) {
codelog(NET__PACKET_ERROR, "packet body does not contain a tuple");
PyDecRef(payload);
return false;
}
PyTuple *maint = (PyTuple *) ss->decoded();
if(maint->items.size() != 4) {
codelog(NET__PACKET_ERROR, "packet body has %lu elements, expected %d", maint->items.size(), 4);
PyDecRef(payload);
return false;
}
//parse first tuple element, unknown
if(maint->items[0]->IsInt()) {
PyInt *tuple0 = (PyInt *) maint->items[0];
remoteObject = tuple0->value();
remoteObjectStr = "";
} else if(maint->items[0]->IsString()) {
PyString *tuple0 = (PyString *) maint->items[0];
remoteObject = 0;
remoteObjectStr = tuple0->content();
} else {
codelog(NET__PACKET_ERROR, "tuple[0] has invalid type %s", maint->items[0]->TypeString());
codelog(NET__PACKET_ERROR, " in:");
payload->Dump(NET__PACKET_ERROR, " ");
PyDecRef(payload);
return false;
}
//parse tuple[1]: method name
if(maint->items[1]->IsString()) {
PyString *i = (PyString *) maint->items[1];
method = i->content();
} else {
codelog(NET__PACKET_ERROR, "tuple[1] has non-string type");
maint->items[1]->Dump(NET__PACKET_ERROR, " --> ");
codelog(NET__PACKET_ERROR, " in:");
payload->Dump(NET__PACKET_ERROR, " ");
PyDecRef(payload);
return false;
}
//grab argument list.
if(!maint->items[2]->IsTuple()) {
codelog(NET__PACKET_ERROR, "argument list has non-tuple type");
maint->items[2]->Dump(NET__PACKET_ERROR, " --> ");
codelog(NET__PACKET_ERROR, "in:");
payload->Dump(NET__PACKET_ERROR, " ");
PyDecRef(payload);
return false;
//.........这里部分代码省略.........