// clntsock.cpp : implementation of the CClientSocket class // // This is a part of the Microsoft Foundation Classes C++ library. // Copyright (C) 1992-1998 Microsoft Corporation // All rights reserved. // // This source code is only intended as a supplement to the // Microsoft Foundation Classes Reference and related // electronic documentation provided with the library. // See these sources for detailed information regarding the // Microsoft Foundation Classes product. #include "stdafx.h" #include "clntsock.h" #include "srvrdoc.h" #include "msg.h" ///////////////////////////////////////////////////////////////////////////// // CClientSocket Construction CClientSocket::CClientSocket(CServerDoc* pDoc) { m_pDoc = pDoc; m_nMsgCount = 0; m_pFile = NULL; m_pArchiveIn = NULL; m_pArchiveOut = NULL; } ///////////////////////////////////////////////////////////////////////////// // CClientSocket Operations void CClientSocket::Init() { m_pFile = new CSocketFile(this); m_pArchiveIn = new CArchive(m_pFile,CArchive::load); m_pArchiveOut = new CArchive(m_pFile,CArchive::store); } void CClientSocket::Abort() { if (m_pArchiveOut != NULL) { m_pArchiveOut->Abort(); delete m_pArchiveOut; m_pArchiveOut = NULL; } } void CClientSocket::SendMsg(CMsg* pMsg) { if (m_pArchiveOut != NULL) { pMsg->Serialize(*m_pArchiveOut); m_pArchiveOut->Flush(); } } void CClientSocket::ReceiveMsg(CMsg* pMsg) { pMsg->Serialize(*m_pArchiveIn); } ///////////////////////////////////////////////////////////////////////////// // CClientSocket Overridable callbacks void CClientSocket::OnReceive(int nErrorCode) { CSocket::OnReceive(nErrorCode); m_pDoc->ProcessPendingRead(this); } ///////////////////////////////////////////////////////////////////////////// // CSocket Implementation CClientSocket::~CClientSocket() { if (m_pArchiveOut != NULL) delete m_pArchiveOut; if (m_pArchiveIn != NULL) delete m_pArchiveIn; if (m_pFile != NULL) delete m_pFile; } #ifdef _DEBUG void CClientSocket::AssertValid() const { CSocket::AssertValid(); } void CClientSocket::Dump(CDumpContext& dc) const { CSocket::Dump(dc); } #endif //_DEBUG IMPLEMENT_DYNAMIC(CClientSocket, CSocket)