home *** CD-ROM | disk | FTP | other *** search
- // 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)
-