private void LoginThread(Object loginInfoObj)
{
NLogEx.LoggerEx logEx = new NLogEx.LoggerEx(log);
logEx.Trace("Enter: eLTEVideoMonitor.LoginThread().");
try
{
eLTELoginInfo loginInfo = loginInfoObj as eLTELoginInfo;
if (loginInfo == null)
{
logEx.Error("loginInfoObj is Null.");
return;
}
if (loginInfo.NotFirstLogin == true)
{
//登陆失败,等待一分后再次尝试登陆
Thread.Sleep(5000);
}
//本机IP
//string localIP = GetLocalIP(ip, iPort, ilocalPort);
if (string.IsNullOrEmpty(localIP))
{
localIP = GetLocalIP(ip, iPort, ilocalPort);
}
logEx.Trace("Call eLTEVideoMonitor.Login({0},{1},{2},{3}).", loginInfo.Ip, loginInfo.Port, loginInfo.User, localIP);
//设置登录服务器IP、本地IP、用户名、密码、sip端口等信息
ELTE_RESULT result = (ELTE_RESULT)lteSdkClient.Set_Login_Info(loginInfo.Ip, localIP, loginInfo.User, loginInfo.Pwd, loginInfo.Port.ToString(), Convert.ToInt32(loginInfo.User));
if (result != ELTE_RESULT.RET_SUCCESS)
{
logEx.Error("Set_Login_Info failed.Monitor id:{0}.ip:{1}, port:{2}, user:{3}", this.monitorId, loginInfo.Ip, loginInfo.Port, loginInfo.User);
}
//发起视频回传成功后,在状态变化事件中处理视频接收
if (callP2pvideo == null)
{
callP2pvideo = P2pStatusDelegateFun;
eLTEInterface.SetP2pVideoCallStaCallBack(callP2pvideo);
callResStatus = CallbackResStatusDelegateFun;
eLTEInterface.SetResStaCallBack(callResStatus);
callUserStatus = CallUserStatusDelegateFun;
eLTEInterface.SetUserStaCallBack(callUserStatus);
callProvisionAllResync = CallProvisionAllDelegateFun;
eLTEInterface.SetProvisionAllResyncCallBack(callProvisionAllResync);
callModuleStatus = CallModuleStatusDelegateFun;
eLTEInterface.SetModStaCallBack(callModuleStatus);
//设置rtp转码回调函数
frameDataCallBack = FrameDataCallBackFun;
//初始化rtp转码模块
rtpAdapter.ESDK_RTP_Init();
//设置NETSOURCE日志目录
IVS_NETSOURCE_RESULT iNet = NetSourcedInterface.IVS_NETSOURCE_Init(AppDomain.CurrentDomain.BaseDirectory + "\\logs");
if (iNet != IVS_NETSOURCE_RESULT.SUCCESS)
{
logEx.Error("SipStackAdapter.IVS_NETSOURCE_Init Failed.");
}
}
//初始化上下文,启动SDK
result = (ELTE_RESULT)lteSdkClient.SDK_START();
if (result != ELTE_RESULT.RET_SUCCESS)
{
logEx.Fatal("eLTEVideoMonitor.SDK_START failed.Monitor id:{0}.ip:{1}, port:{2}, user:{3},ErrorNo:{4}", this.monitorId, loginInfo.Ip, loginInfo.Port, loginInfo.User,(int)result);
//服务器端返回错误, 操作被调度机拒绝
if ((int)(result) == -40097)
{
logEx.Fatal("Login to eLTEVideoMonitor failed,elte remote failed,elte refuse to connect.");
}
}
else
{
isLoginSuccess = true;
logEx.Info("eLTEVideoMonitor.SDK_START success.Monitor id:{0}.ip:{1}, port:{2}, user:{3}.", this.monitorId, loginInfo.Ip, loginInfo.Port, loginInfo.User);
}
}
catch (System.Exception ex)
{
logEx.Error("Load eLTEVideoMonitor failed. Exception message:{0}.", ex.Message);
}
}