00001 /* 00002 * 00003 * 00004 * Distributed under the OpenDDS License. 00005 * See: http://www.opendds.org/license.html 00006 */ 00007 00008 #ifndef OPENDDS_DCPS_THREADSYNCHSTRATEGY_H 00009 #define OPENDDS_DCPS_THREADSYNCHSTRATEGY_H 00010 00011 #include "dds/DCPS/dcps_export.h" 00012 #include "dds/DCPS/RcObject.h" 00013 #include "ace/Synch_Traits.h" 00014 00015 OPENDDS_BEGIN_VERSIONED_NAMESPACE_DECL 00016 00017 namespace OpenDDS { 00018 namespace DCPS { 00019 00020 class ThreadSynch; 00021 class ThreadSynchResource; 00022 00023 //MJM: Some class documentation here would be extremely helpful. 00024 class OpenDDS_Dcps_Export ThreadSynchStrategy 00025 : public RcObject 00026 { 00027 public: 00028 00029 virtual ~ThreadSynchStrategy(); 00030 00031 virtual ThreadSynch* create_synch_object( 00032 ThreadSynchResource* synch_resource, 00033 long priority, 00034 int scheduler) = 0; 00035 00036 protected: 00037 00038 ThreadSynchStrategy(); 00039 }; 00040 00041 } // namespace DCPS 00042 } // namespace OpenDDS 00043 00044 OPENDDS_END_VERSIONED_NAMESPACE_DECL 00045 00046 #if defined (__ACE_INLINE__) 00047 #include "ThreadSynchStrategy.inl" 00048 #endif /* __ACE_INLINE__ */ 00049 00050 #endif /* OPENDDS_DCPS_THREADSYNCHSTRATEGY_H */