//------------------------------------------------------------------------------------- PyObject* RemoteEntityMethod::tp_call(PyObject* self, PyObject* args, PyObject* kwds) { RemoteEntityMethod* rmethod = static_cast<RemoteEntityMethod*>(self); MethodDescription* methodDescription = rmethod->getDescription(); EntityMailboxAbstract* mailbox = rmethod->getMailbox(); // DEBUG_MSG(boost::format("RemoteEntityMethod::tp_call:%1%.\n") % methodDescription->getName()); if(methodDescription->checkArgs(args)) { Mercury::Bundle* pBundle = Mercury::Bundle::ObjPool().createObject(); mailbox->newMail((*pBundle)); MemoryStream mstream; methodDescription->addToStream(&mstream, args); if(mstream.wpos() > 0) (*pBundle).append(mstream.data(), mstream.wpos()); mailbox->postMail((*pBundle)); Mercury::Bundle::ObjPool().reclaimObject(pBundle); } else { ERROR_MSG(boost::format("RemoteEntityMethod::tp_call:%1% checkArgs is error!\n") % methodDescription->getName()); } S_Return; }
//------------------------------------------------------------------------------------- PyObject* RemoteEntityMethod::tp_call(PyObject* self, PyObject* args, PyObject* kwds) { RemoteEntityMethod* rmethod = static_cast<RemoteEntityMethod*>(self); MethodDescription* methodDescription = rmethod->getDescription(); EntityMailboxAbstract* mailbox = rmethod->getMailbox(); // DEBUG_MSG(fmt::format("RemoteEntityMethod::tp_call:{}.\n"), methodDescription->getName())); if(methodDescription->checkArgs(args)) { Network::Bundle* pBundle = Network::Bundle::createPoolObject(); mailbox->newMail((*pBundle)); MemoryStream mstream; methodDescription->addToStream(&mstream, args); if(mstream.wpos() > 0) (*pBundle).append(mstream.data(), mstream.wpos()); mailbox->postMail(pBundle); } else { ERROR_MSG(fmt::format("RemoteEntityMethod::tp_call:{} checkArgs error!\n", methodDescription->getName())); } S_Return; }