public void AddMediaData(MediaData data)
{
NLogEx.LoggerEx logEx = new NLogEx.LoggerEx(log);
// 通道失效,不发送码流
if (isValid == false)
{
if (flag == false)
{
logEx.Error("AddMediaData label={0} is invalid.");
flag = true;
}
return;
}
try
{
bool successed = this.meidaDataQueueLocker.TryEnterWriteLock(CgwConst.ENTER_LOCK_WAIT_TIME);
// 申请互斥
if (successed)
{
try
{
this.mediaDataQueue.Enqueue(data);
}
finally
{
// 释放互斥量
this.meidaDataQueueLocker.ExitWriteLock();
}
}
else
{
// 日志
logEx.Error("AddRtp: Enert Write Lock Failed.WaitingReadCount:{0};WaitingWriteCount:{1}.", this.meidaDataQueueLocker.WaitingReadCount, this.meidaDataQueueLocker.WaitingWriteCount);
}
}
catch (Exception ex)
{
// 日志
logEx.Error(ex, "AddRtp: Enert Write Lock Exception.");
}
this.waitEvent.Set();
}