00001 #ifndef __RIPC_SQUEUE_H__ 00002 #define __RIPC_SQUEUE_H__ 00003 00004 #include "RIPCPrimitive.h" 00005 00021 class RIPC_DLL_ENTRY RIPCQueue : public virtual RIPCPrimitive { 00022 public: 00037 void get(RIPCObject& objDesc) { 00038 priorityGet(DEFAULT_RANK, objDesc); 00039 } 00040 00049 void* get() { 00050 return priorityGet(DEFAULT_RANK); 00051 } 00052 00053 00064 bool get(RIPCObject& objDesc, unsigned timeout) { 00065 return priorityGet(DEFAULT_RANK, objDesc, timeout); 00066 } 00067 00078 void* get(unsigned timeout) { 00079 return priorityGet(DEFAULT_RANK, timeout); 00080 } 00081 00098 virtual void priorityGet(int rank, RIPCObject& objDesc) = 0; 00099 00110 void* priorityGet(int rank) { 00111 RIPCObject objDesc; 00112 priorityGet(rank, objDesc); 00113 return (void*)objDesc.data; 00114 } 00115 00116 00129 virtual bool priorityGet(int rank, RIPCObject& objDesc, unsigned timeout) = 0; 00130 00143 void* priorityGet(int rank, unsigned timeout) { 00144 RIPCObject objDesc; 00145 return priorityGet(rank, objDesc, timeout) ? (void*)objDesc.data : NULL; 00146 } 00147 00148 00153 virtual void put(RIPCObject const& objDesc) = 0; 00154 00160 virtual void put(void const* obj, size_t objSize) = 0; 00161 00167 virtual void broadcast(RIPCObject const& objDesc) = 0; 00168 00175 virtual void broadcast(void const* obj, size_t objSize) = 0; 00176 00177 RIPCPrimitiveType getType() { 00178 return RIPC_QUEUE; 00179 } 00180 }; 00181 00182 00183 #endif