中间件底层,websocket

I_Stream.hpp 3.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. //******************************************************************************
  2. // RCF - Remote Call Framework
  3. //
  4. // Copyright (c) 2005 - 2020, Delta V Software. All rights reserved.
  5. // http://www.deltavsoft.com
  6. //
  7. // RCF is distributed under dual licenses - closed source or GPL.
  8. // Consult your particular license for conditions of use.
  9. //
  10. // If you have not purchased a commercial license, you are using RCF
  11. // under GPL terms.
  12. //
  13. // Version: 3.2
  14. // Contact: support <at> deltavsoft.com
  15. //
  16. //******************************************************************************
  17. #ifndef INCLUDE_SF_I_STREAM_HPP
  18. #define INCLUDE_SF_I_STREAM_HPP
  19. #include <RCF/Export.hpp>
  20. #include <SF/PortableTypes.hpp>
  21. #include <RCF/Tools.hpp>
  22. namespace SF {
  23. //*************************************************************************
  24. // Stream interfaces
  25. class DataPtr;
  26. class Node;
  27. typedef std::pair<void *, const std::type_info *> ObjectId;
  28. //--------------------------------------------------------------------------
  29. // I_Encoding
  30. class RCF_EXPORT I_Encoding
  31. {
  32. public:
  33. virtual ~I_Encoding()
  34. {}
  35. #define SF_DECLARE_GETCOUNT_PV(T) \
  36. virtual UInt32 getCount( \
  37. DataPtr & data, \
  38. T * ) = 0;
  39. #define SF_DECLARE_TODATA_PV(T) \
  40. virtual void toData( \
  41. DataPtr & data, \
  42. T * pObj, \
  43. int nCount) = 0;
  44. #define SF_DECLARE_TOOBJECT_PV(T) \
  45. virtual void toObject( \
  46. DataPtr & data, \
  47. T * pObj, \
  48. int nCount) = 0;
  49. SF_FOR_EACH_FUNDAMENTAL_TYPE( SF_DECLARE_GETCOUNT_PV )
  50. SF_FOR_EACH_FUNDAMENTAL_TYPE( SF_DECLARE_TODATA_PV )
  51. SF_FOR_EACH_FUNDAMENTAL_TYPE( SF_DECLARE_TOOBJECT_PV )
  52. #undef SF_DECLARE_GETCOUNT_PV
  53. #undef SF_DECLARE_TODATA_PV
  54. #undef SF_DECLARE_TOOBJECT_PV
  55. };
  56. //--------------------------------------------------------------------------
  57. // EncodingTest, EncodingBinaryNative, EncodingBinaryPortable
  58. #define SF_DECLARE_GETCOUNT(T) \
  59. virtual UInt32 getCount( \
  60. DataPtr & data, \
  61. T * );
  62. #define SF_DECLARE_TODATA(T) \
  63. virtual void toData( \
  64. DataPtr & data, \
  65. T * pObj, \
  66. int nCount);
  67. #define SF_DECLARE_TOOBJECT(T) \
  68. virtual void toObject( \
  69. DataPtr & data, \
  70. T * pObj, \
  71. int nCount);
  72. class RCF_EXPORT EncodingText : public I_Encoding
  73. {
  74. public:
  75. SF_FOR_EACH_FUNDAMENTAL_TYPE( SF_DECLARE_GETCOUNT )
  76. SF_FOR_EACH_FUNDAMENTAL_TYPE( SF_DECLARE_TODATA )
  77. SF_FOR_EACH_FUNDAMENTAL_TYPE( SF_DECLARE_TOOBJECT )
  78. };
  79. class RCF_EXPORT EncodingBinaryNative : public I_Encoding
  80. {
  81. public:
  82. SF_FOR_EACH_FUNDAMENTAL_TYPE( SF_DECLARE_GETCOUNT )
  83. SF_FOR_EACH_FUNDAMENTAL_TYPE( SF_DECLARE_TODATA )
  84. SF_FOR_EACH_FUNDAMENTAL_TYPE( SF_DECLARE_TOOBJECT )
  85. };
  86. class RCF_EXPORT EncodingBinaryPortable : public I_Encoding
  87. {
  88. public:
  89. SF_FOR_EACH_FUNDAMENTAL_TYPE( SF_DECLARE_GETCOUNT )
  90. SF_FOR_EACH_FUNDAMENTAL_TYPE( SF_DECLARE_TODATA )
  91. SF_FOR_EACH_FUNDAMENTAL_TYPE( SF_DECLARE_TOOBJECT )
  92. };
  93. #undef SF_DECLARE_GETCOUNT
  94. #undef SF_DECLARE_TODATA
  95. #undef SF_DECLARE_TOOBJECT
  96. }
  97. #endif // ! INCLUDE_SF_I_STREAM_HPP