#include "stdafx.h"#include "AutoSendToClientThread.h"#include "Misc.h"#include "Options.h"#include "CP_Main.h"#include "client.h"CAutoSendToClientThread::CAutoSendToClientThread(void){m_waitTimeout = 30000;m_threadName = "CAutoSendToClientThread";for(int eventEnum = 0; eventEnum < ECAUTOSENDTOCLIENTTHREADEVENTS_COUNT; eventEnum++){AddEvent(eventEnum);}}CAutoSendToClientThread::~CAutoSendToClientThread(void){}void CAutoSendToClientThread::FireSendToClient(CClipList *pClipList){Start();ATL::CCritSecLock csLock(m_cs.m_sect);if(m_threadRunning){Log(_T("Adding clip to send to client in thread"));POSITION pos = pClipList->GetHeadPosition();while(pos){CClip *pClip = pClipList->GetNext(pos);m_saveClips.AddTail(pClip);}pClipList->RemoveAll();FireEvent(SEND_TO_CLIENTS);}else{Log(_T("Error creating thread to send to clients"));}}void CAutoSendToClientThread::OnTimeOut(void *param){Stop(-1);}void CAutoSendToClientThread::OnEvent(int eventId, void *param){switch((eCAutoSendToClientThreadEvents)eventId){case SEND_TO_CLIENTS:OnSendToClient();break;}}void CAutoSendToClientThread::OnSendToClient(){CClipList *pLocalClips = new CClipList();//Save the clips locally{ATL::CCritSecLock csLock(m_cs.m_sect);POSITION pos;CClip* pClip;pos = m_saveClips.GetHeadPosition();while(pos){pClip = m_saveClips.GetNext(pos);pLocalClips->AddTail(pClip);}//pLocalClips now own, the clipsm_saveClips.RemoveAll();}SendToClient(pLocalClips);delete pLocalClips;pLocalClips = NULL;}bool CAutoSendToClientThread::SendToClient(CClipList *pClipList){LogSendRecieveInfo("@@@@@@@@@@@@@@@ - START OF SendClientThread - @@@@@@@@@@@@@@@");if(pClipList == NULL){LogSendRecieveInfo("ERROR if(pClipList == NULL)");return FALSE;}INT_PTR lCount = pClipList->GetCount();LogSendRecieveInfo(StrF(_T("Start of Send ClientThread Count - %d"), lCount));for(int nClient = 0; nClient < MAX_SEND_CLIENTS; nClient++){if(g_Opt.m_SendClients[nClient].bSendAll &&g_Opt.m_SendClients[nClient].csIP.GetLength() > 0){CClient client;if(client.OpenConnection(g_Opt.m_SendClients[nClient].csIP) == FALSE){LogSendRecieveInfo(StrF(_T("ERROR opening connection to %s"), g_Opt.m_SendClients[nClient].csIP));if(g_Opt.m_SendClients[nClient].bShownFirstError == FALSE){CString cs;cs.Format(_T("Error opening connection to %s"), g_Opt.m_SendClients[nClient].csIP);::SendMessage(theApp.m_MainhWnd, WM_SEND_RECIEVE_ERROR, (WPARAM)cs.GetBuffer(cs.GetLength()), 0);cs.ReleaseBuffer();g_Opt.m_SendClients[nClient].bShownFirstError = TRUE;}continue;}//We were connected successfully show an error next time we can't connectg_Opt.m_SendClients[nClient].bShownFirstError = FALSE;CClip* pClip;POSITION pos;pos = pClipList->GetHeadPosition();while(pos){pClip = pClipList->GetNext(pos);if(pClip == NULL){ASSERT(FALSE);LogSendRecieveInfo("Error in GetNext");break;}LogSendRecieveInfo(StrF(_T("Sending clip to %s"), g_Opt.m_SendClients[nClient].csIP));if(client.SendItem(pClip, false) == FALSE){CString cs;cs.Format(_T("Error sending clip to %s"), g_Opt.m_SendClients[nClient].csIP);::SendMessage(theApp.m_MainhWnd, WM_SEND_RECIEVE_ERROR, (WPARAM)cs.GetBuffer(cs.GetLength()), 0);cs.ReleaseBuffer();break;}}client.CloseConnection();}}LogSendRecieveInfo("@@@@@@@@@@@@@@@ - END OF SendClientThread - @@@@@@@@@@@@@@@");return TRUE;}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。