#include "StdAfx.h" #include "IpcSvrCallbackImpl.h" CSvrConnect::CSvrConnect(IIpcHandle * pHandle) :m_ipcHandle(pHandle) { } CSvrConnect::~CSvrConnect() { m_ipcHandle = NULL; } IIpcHandle * CSvrConnect::GetIpcHandle() { return m_ipcHandle; } void CSvrConnect::BuildShareBufferName(ULONG_PTR idLocal, ULONG_PTR idRemote, TCHAR szBuf[MAX_PATH]) const { _stprintf(szBuf, CDN_SHARE_BUF_NAME_FMT, (DWORD)(((LPARAM)idLocal) & 0xffffffff), (DWORD)(((LPARAM)idRemote) & 0xffffffff)); } void CSvrConnect::OnGetCdnPort(Param_GetCdnPort & param) { param.ret = CT2A(g_strPort); } ////////////////////////////////////////////// CIpcSvrCallbackImpl::CIpcSvrCallbackImpl(void) { CAutoRefPtr ipcFac; m_comMgr.CreateIpcObject((IObjRef**)&ipcFac); ipcFac->CreateIpcServer(&m_ipcSvr); } CIpcSvrCallbackImpl::~CIpcSvrCallbackImpl(void) { m_ipcSvr = NULL; } void CIpcSvrCallbackImpl::OnNewConnection(IIpcHandle * pIpcHandle, IIpcConnection ** ppConn) { *ppConn = new CSvrConnect(pIpcHandle); } int CIpcSvrCallbackImpl::GetBufSize() const { return 1024; } void * CIpcSvrCallbackImpl::GetSecurityAttr() const { return NULL; } void CIpcSvrCallbackImpl::ReleaseSecurityAttr(void * psa) const { } void CIpcSvrCallbackImpl::OnConnected(IIpcConnection * pConn) { //SLOG_INFO("new connection accepted,client id:"<GetIpcHandle()->GetRemoteId()); } void CIpcSvrCallbackImpl::OnDisconnected(IIpcConnection * pConn) { //SLOG_INFO("connection disconnected,client id:" << pConn->GetIpcHandle()->GetRemoteId()); } HRESULT CIpcSvrCallbackImpl::Init( __int64 lBodyId ) { return m_ipcSvr->Init(lBodyId, this); } CAutoRefPtr CIpcSvrCallbackImpl::GetIpcSvr() { return m_ipcSvr; } void CIpcSvrCallbackImpl::DoSendCast(IIpcConnection *pConn,ULONG_PTR data) { CIpcSvrCallbackImpl * _this = (CIpcSvrCallbackImpl*)data; Param_Hello param; param.text = ""; pConn->GetIpcHandle()->CallFun(¶m); } void CIpcSvrCallbackImpl::SendCast( SStringT &strMsg ) { m_strMsg = strMsg; m_ipcSvr->EnumClient(&CIpcSvrCallbackImpl::DoSendCast,(ULONG_PTR)this); }