?? netagentsocket.cpp
字號:
#include "stdafx.h"
#include "netAgentSocket.h"
#include "agentIni.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
CAgentIni* GetAgentIni(void);
CNetSocketContainer::CNetSocketContainer(SOCKET sC,SOCKET sS,UINT uHandle,LPCSTR pszProlog):m_lockAccess(uHandle,pszProlog)
{
m_sockClient=sC;
m_sockServer=sS;
m_uRefer=0;
m_szContainerName.Format("%s_%d",pszProlog,uHandle);
m_iBufferLen = GetAgentIni()->m_iMaxLength;
m_pbBuffer = new BYTE[m_iBufferLen];
}
CNetSocketContainer::CNetSocketContainer(SOCKET sC,SOCKET sS,LPCSTR pszHandle,LPCSTR pszProlog):m_lockAccess(pszHandle,pszProlog)
{
m_sockClient=sC;
m_sockServer=sS;
m_uRefer=0;
m_szContainerName = pszProlog;
m_szContainerName +="_";
m_szContainerName +=pszHandle;
m_iBufferLen = GetAgentIni()->m_iMaxLength;
m_pbBuffer = new BYTE[m_iBufferLen];
}
CNetSocketContainer::~CNetSocketContainer()
{
ASSERT(m_uRefer == 0);
delete m_pbBuffer;
}
UINT CNetSocketContainer::AddRefer(void)
{
m_lockAccess.Access();
UINT uRet = ++ m_uRefer;
m_lockAccess.LeaveAccess();
return uRet;
}
UINT CNetSocketContainer::ReleaseRefer(void)
{
m_lockAccess.Access();
UINT uRet = -- m_uRefer;
m_lockAccess.LeaveAccess();
//if(uRet == 0) delete this;
return uRet;
}
void CNetSocketContainer::CloseAll(void)
{
m_lockAccess.Access();
if(m_sockClient)
closesocket(m_sockClient);
if(m_sockServer)
closesocket(m_sockServer);
m_sockClient=NULL;
m_sockServer=NULL;
m_lockAccess.LeaveAccess();
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -