vxdcomExtent.cpp
上传用户:nvosite88
上传日期:2007-01-17
资源大小:4983k
文件大小:3k
源码类别:

VxWorks

开发平台:

C/C++

  1. /* vxdcomExtent.cpp - VXDCOM_EXTENT implementation (VxDCOM) */
  2. /* Copyright (c) 1999 Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 01l,17dec01,nel  Add include file for diab build.
  7. 01k,28feb00,dbs  fix extent size
  8. 01j,18feb00,dbs  fix compilation issues
  9. 01i,09sep99,drm  Adding include for new include file which contains
  10.                  GUID_VXDCOM_EXTENT definition.
  11. 01h,19aug99,aim  change assert to VXDCOM_ASSERT
  12. 01g,03aug99,drm  Changing long to int.
  13. 01f,29jul99,drm  Removing unnecessary code.
  14. 01e,29jul99,drm  Changing VXDCOM_EXTENT to accomodate VXDCOMEXTENT structure.
  15. 01d,15jul99,drm  Removing separate default constructor.
  16. 01c,13jul99,drm  changed call to constructor to class::class form 
  17. 01b,17jun99,aim  changed assert to assert
  18. 01a,17may99,drm  created
  19. */
  20. #include "dcomProxy.h" // For VXDCOM_DREP_LITTLE_ENDIAN
  21. #include "TraceCall.h"
  22. #include "dcomExtent.h" // For GUID_VXDCOM_EXTENT, VXDCOMEXTENT
  23. #include "vxdcomExtent.h" // For interface declaration
  24. /* Include symbol for diab */
  25. extern "C" int include_vxdcom_vxdcomExtent (void)
  26.     {
  27.     return 0;
  28.     }
  29. ///////////////////////////////////////////////////////////////////////////////
  30. //
  31. // VXDCOM_EXTENT - default / non-default constructor 
  32. //
  33. // This constructor creates a new VXDCOM_EXTENT object of with priority
  34. // <priority>.  If no priority is provided, then a default priority of
  35. // 0 is used.
  36. //
  37. // RETURNS: none
  38. //
  39. // nomanual
  40. //
  41.  
  42. VXDCOM_EXTENT::VXDCOM_EXTENT
  43.     (
  44.     int priority // client priority to be propagated (default = 0)
  45.     )
  46.     {
  47.     TRACE_CALL;
  48.     id = GUID_VXDCOM_EXTENT;
  49.     size = sizeof (VXDCOMEXTENT);
  50.     extent.dummy = 0;
  51.     
  52.     setPriority (priority); 
  53.     }
  54.  
  55. ///////////////////////////////////////////////////////////////////////////////
  56. //
  57. // setPriority - set the priority to a new value 
  58. //
  59. // This method sets the priority of the VXDCOM_EXTENT object to a new value
  60. // specified by the <priority> argument.  The value is not kept in a separate
  61. // variable, but rather stored as an already marshalled value in the data
  62. // array of bytes. 
  63. //
  64. // RETURNS: S_OK
  65. //
  66. // nomanual
  67. //  
  68. void VXDCOM_EXTENT::setPriority
  69.     (
  70.     int priority // priority to set data to
  71.     )
  72.     {
  73.     TRACE_CALL;
  74.     // Copy the priority into the array of bytes and use ndr_make_right()
  75.     // to set the byte order to a known byte order.  We cannot make assumptions
  76.     // about the byte order because we don't know the byte order of the 
  77.     // remote node. 
  78.     ndr_make_right (priority, VXDCOM_DREP_LITTLE_ENDIAN);
  79.     *((long*) data) = (long) priority;
  80.     }
  81. ///////////////////////////////////////////////////////////////////////////////
  82. //
  83. // getPriority - get the priority of the current object 
  84. //
  85. // This routine return the encoded priority from a VXDCOM_EXTENT structure 
  86. //
  87. // RETURNS: encoded priority
  88. //
  89. // nomanual
  90. //
  91. int VXDCOM_EXTENT::getPriority ()
  92.     {
  93.     TRACE_CALL;
  94.     // Get the priority and convert it back to the correct byte order
  95.     // before returning...
  96.     int priority = (int) *((long*)data);
  97.     ndr_make_right (priority, VXDCOM_DREP_LITTLE_ENDIAN);
  98.     return priority;
  99.     }