NetException.h
上传用户:maryhy001
上传日期:2007-05-02
资源大小:2317k
文件大小:3k
源码类别:

网格计算

开发平台:

Visual C++

  1. // NetException.h: interface for the CNetException class.
  2. //
  3. // Written by Marat Bedretdinov (maratb@hotmail.com)
  4. // Copyright (c) 2000.
  5. //
  6. // This code may be used in compiled form in any way you desire. This
  7. // file may be redistributed unmodified by any means PROVIDING it is 
  8. // not sold for profit without the authors written consent, and 
  9. // providing that this notice and the authors name is included. 
  10. //
  11. // This file is provided "as is" with no expressed or implied warranty.
  12. // The author accepts no liability if it causes any damage whatsoever.
  13. // It's free - so you get what you pay for.//
  14. #if !defined(AFX_NETEXCEPTION_H__C8305B92_33D1_4983_B276_501A47CFDF21__INCLUDED_)
  15. #define AFX_NETEXCEPTION_H__C8305B92_33D1_4983_B276_501A47CFDF21__INCLUDED_
  16. #if _MSC_VER > 1000
  17. #pragma once
  18. #endif // _MSC_VER > 1000
  19. #define ERR_NET_FAILED_INIT_WINSOCKDLL 107
  20. #define ERR_NET_FAILED_UNINIT_WINSOCKDLL 108
  21. #define ERR_NET_FAILED_CREATESOCKET 109
  22. #define ERR_NET_FAILED_CLOSESOCKET 110
  23. #define ERR_NET_FAILED_SHUTDOWNSOCKET 111
  24. #define ERR_NET_FAILED_BINDSVRADDR 112
  25. #define ERR_NET_FAILED_LISTENING 113
  26. #define ERR_NET_FAILED_CONNECTSVR 114
  27. #define ERR_NET_FAILED_ACCEPTSOCKET 115
  28. #define ERR_NET_FAILED_RECVEDDATA 116
  29. #define ERR_NET_FAILED_SENDEDDATA 117
  30. #define ERR_NET_FAILED_CREATEFILE 118
  31. #define ERR_NET_FAILED_WRITEFILE 119
  32. #define ERR_NET_ERROR_ASYNCSELECT 120
  33. #define ERR_NET_ERROR_CREATELOCALFILE 130
  34. extern long GetLastSocketError();
  35. extern const char* GetSocketErrorDescription(long);
  36. class CNetException  
  37. {
  38. public:
  39. CNetException():m_nNetErr(0) {}
  40. CNetException(int nNetErr, const char* strFuncName, const char* strDescr = 0):
  41. m_nNetErr(nNetErr)
  42. if (strFuncName) m_strFuncName = strFuncName;
  43. if (strDescr) m_strDescr = strDescr;
  44. }
  45. CNetException(const CNetException& x);
  46. virtual CNetException& operator=(const CNetException& x)
  47. {
  48. m_nNetErr = x.m_nNetErr;
  49. m_strFuncName = x.m_strFuncName;
  50. m_strDescr = x.m_strDescr;
  51. return *this;
  52. }
  53. virtual CNetException* clone() const { return new CNetException; }
  54. virtual  ~CNetException();
  55. int  GetErrCode() {return m_nNetErr;}
  56. const char* GetErrDescr() {return m_strDescr.c_str();}
  57. const char* GetErrFunc() {return m_strFuncName.c_str();}
  58. protected:
  59. int    m_nNetErr;
  60. string m_strFuncName;
  61. string m_strDescr;
  62. };
  63. //
  64. class CNetSockException : public CNetException
  65. {
  66. public:
  67. CNetSockException(int nNetErr, int nSockErr, const char* strFuncName):
  68.   CNetException(nNetErr, strFuncName),
  69.           m_nSockErr(nSockErr) {}
  70.   
  71.   CNetSockException(const CNetSockException&);
  72.   
  73.   virtual CNetException& operator=(const CNetException& x)
  74.   {
  75.   CNetException::operator=(x);
  76.   const CNetSockException& sx = static_cast<const CNetSockException&>(x);
  77.   m_nSockErr = sx.m_nSockErr;
  78.           return *this;
  79.   }
  80.   
  81.   virtual CNetException* clone() const { return new CNetSockException; }
  82.   
  83.   virtual ~CNetSockException() {}
  84.   
  85.   int             GetSockErrCode() {return m_nSockErr;}
  86.   const char* GetSockErrDescr() {return GetSocketErrorDescription(m_nSockErr);}
  87. protected:
  88. CNetSockException() {}
  89. protected:
  90. int     m_nSockErr;
  91. };
  92. #endif // !defined(AFX_NETEXCEPTION_H__C8305B92_33D1_4983_B276_501A47CFDF21__INCLUDED_)