FILE* AnswerMachineFactory::getMsgStoreGreeting(string msgname, string user, string domain) { if (!msg_storage) return NULL; msgname +=".wav"; domain += DOMAIN_PROMPT_SUFFIX; DBG("trying to get message '%s' for user '%s' domain '%s'\n", msgname.c_str(), user.c_str(), domain.c_str()); AmArg di_args,ret; di_args.push(domain.c_str()); // domain di_args.push(user.c_str()); // user di_args.push(msgname.c_str()); // msg name msg_storage->invoke("msg_get",di_args,ret); if (!ret.size() || !isArgInt(ret.get(0))) { ERROR("msg_get for user '%s' domain '%s' msg '%s'" " returned no (valid) result.\n", user.c_str(), domain.c_str(), msgname.c_str() ); return NULL; } int ecode = ret.get(0).asInt(); if (MSG_OK != ecode) { DBG("msg_get for user '%s' domain '%s' message '%s': %s\n", user.c_str(), domain.c_str(), msgname.c_str(), MsgStrError(ret.get(0).asInt())); if ((ret.size() > 1) && isArgAObject(ret.get(1))) { MessageDataFile* f = dynamic_cast<MessageDataFile*>(ret.get(1).asObject()); if (NULL != f) delete f; } return NULL; } if ((ret.size() < 2) || (!isArgAObject(ret.get(1)))) { ERROR("msg_get for user '%s' domain '%s' message '%s': " "invalid return value\n", user.c_str(), domain.c_str(), msgname.c_str()); return NULL; } MessageDataFile* f = dynamic_cast<MessageDataFile*>(ret.get(1).asObject()); if (NULL == f) return NULL; FILE* fp = f->fp; delete f; return fp; }
FILE* VoiceboxDialog::getCurrentMessage() { string msgname = cur_msg->name; DBG("trying to get message '%s' for user '%s' domain '%s'\n", msgname.c_str(), user.c_str(), domain.c_str()); AmArg di_args,ret; di_args.push(domain.c_str()); // domain di_args.push(user.c_str()); // user di_args.push(msgname.c_str()); // msg name msg_storage->invoke("msg_get",di_args,ret); if (!ret.size() || !isArgInt(ret.get(0))) { ERROR("msg_get for user '%s' domain '%s' msg '%s'" " returned no (valid) result.\n", user.c_str(), domain.c_str(), msgname.c_str() ); return NULL; } int ecode = ret.get(0).asInt(); if (MSG_OK != ecode) { ERROR("msg_get for user '%s' domain '%s' message '%s': %s", user.c_str(), domain.c_str(), msgname.c_str(), MsgStrError(ret.get(0).asInt())); return NULL; } if ((ret.size() < 2) || (!isArgAObject(ret.get(1)))) { ERROR("msg_get for user '%s' domain '%s' message '%s': invalid return value\n", user.c_str(), domain.c_str(), msgname.c_str()); return NULL; } MessageDataFile* f = dynamic_cast<MessageDataFile*>(ret.get(1).asObject()); if (NULL == f) return NULL; FILE* fp = f->fp; delete f; return fp; }
static DSMConfChannel* getDSMConfChannel(DSMSession* sc_sess) { if (sc_sess->avar.find(CONF_AKEY_CHANNEL) == sc_sess->avar.end()) { return NULL; } ArgObject* ao = NULL; DSMConfChannel* res = NULL; try { if (!isArgAObject(sc_sess->avar[CONF_AKEY_CHANNEL])) { return NULL; } ao = sc_sess->avar[CONF_AKEY_CHANNEL].asObject(); } catch (...){ return NULL; } if (NULL == ao || NULL == (res = dynamic_cast<DSMConfChannel*>(ao))) { return NULL; } return res; }