因为在工作需要的时候发现EasyDarwin ,现有resful接口上缺少回复信息,因此需要自己加上创建源的状态回复。于是准备加上该功能,方便业务服务器进行管理和异常处理。
http 请求在 HTTPSession::ExecNetMsgEasyUDPModuleReq 中处理http的请求
1、在自定义模块上添加如下代码
if(clientSesRef != NULL)// 不允许相同
{
//session = (EasyUDPSession*)clientSesRef->GetObject();
nEasyErrCode = -1;
}
else
{
session = NEW EasyUDPSession(inParams->inListenAddr, inParams->inCastAddr,inParams->inPort, inParams->inIsSSM, inParams->inStreamName);
OS_Error theErr = sUDPSessionMap->Register(session->GetRef());
Assert(theErr == QTSS_NoErr);
OSRef* debug = sUDPSessionMap->Resolve(&streamName);
Assert(debug == session->GetRef());
nEasyErrCode = session->UDPSessionStart();
sUDPSessionMap->Release(session->GetRef());
}
return nEasyErrCode';
2、nEasyErrCode的值返回给 CallDispatch函数
如下代码片段:
QTSSModule* theModule = QTSServerInterface::GetModule(QTSSModule::kEasyUDPOpenRole, fCurrentModule);
//获取调用返回的错误码,可以定义0表示成功,<0表示失败,具体错误码可以自己定义
theErr = theModule->CallDispatch(Easy_UDPOpen_Role, ¶ms);
theErr 就是错误码
3、构造回应的报文:
EasyMsgSCStartHLSACK 对jsoncpp 进行了封装,使用很方便
如下代码生成了返回的json 报文
EasyMsgSCStartHLSACK ack;
ack.SetHeaderValue(EASY_TAG_VERSION, "1.0");
if (theErr <0)
{
ack.SetBodyValue<char>("errorcode",'0');
}
else
{
ack.SetBodyValue<char>("errorcode",'1');
}
最后和原来的代码一致不需要修改代码
(本人使用的版本为找官方的定制版本,打开的模块是在开源版本没有的,但是处理请求是一致的)