00001
00002 #ifndef SCT_SCTAPIIPC_CRATESTORE_H
00003 #define SCT_SCTAPIIPC_CRATESTORE_H
00004
00005 namespace Sct {
00006 class CrateStore;
00007 };
00008
00009 #include "Sct_SctApi/SctApi.hh"
00010 #include "Sct/Addressing.h"
00011 #include <list>
00012 #include <map>
00013 #include "boost/thread.hpp"
00014
00015 namespace Sct {
00016
00017 class CrateStore {
00018
00019 private:
00020 typedef Sct_SctApi::CrateIPC WorkerBase;
00021
00022 public:
00023 typedef Sct_SctApi::CrateIPC_var Worker;
00024 typedef std::list<Worker> Workers;
00025 typedef std::list<Sct::UCID> UCIDList;
00026
00027 public:
00028 void registerNewCrateController(Sct_SctApi::CrateIPC_ptr cc);
00029 Worker getCrate(const Sct::UCID &);
00030 Worker getCrate(const Sct::Corba::UCID &);
00031 Worker getCrate(const Sct::URID &);
00032 Worker getCrate(const Sct::Corba::URID &);
00033 Workers & workers();
00034 unsigned int size() { return m_apis.size(); };
00035 UCIDList ucidList();
00036
00037 private:
00038 boost::recursive_mutex m_apisMutex;
00039 Workers m_apis;
00040 typedef std::map<Sct::UCID, Workers::iterator> Map;
00041 Map m_mapUCIDToWorkersIterator;
00042
00043 };
00044
00045 };
00046
00047 #endif