Main Page   Modules   Class Hierarchy   Data Structures   File List   Data Fields   Globals   Related Pages  

oscl_registry_serv_impl.h

Go to the documentation of this file.
00001 // -*- c++ -*-
00002 // = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
00003 
00004 //               Oscl Registry Serv Impl
00005 
00006 // = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
00007 
00019 #ifndef OSCL_REGISTRY_SERV_IMPL_H_INCLUDED
00020 #define OSCL_REGISTRY_SERV_IMPL_H_INCLUDED
00021 
00022 #include "oscl_base.h"
00023 #include "osclconfig_proc.h"
00024 
00025 #include "oscl_registry_types.h"
00026 
00031 #include "oscl_string.h"
00032 #include "oscl_vector.h"
00033 #include "oscl_mem.h"
00034 
00038 class OsclComponentRegistryElement
00039 {
00040     public:
00041         OsclComponentRegistryElement(OSCL_String&, OsclComponentFactory);
00042         OsclComponentRegistryElement(const OsclComponentRegistryElement&);
00043         OsclComponentRegistryElement& operator=(const OsclComponentRegistryElement& src);
00044         ~OsclComponentRegistryElement();
00045 
00046         bool Match(OSCL_String& aStr, bool aExact);
00047 
00048         OSCL_String* iId;//use a pointer here instead of a container for efficiency
00049         //since this element is used in an oscl vector.
00050         OsclComponentFactory iFactory;
00051         uint32 iComponentId;
00052 };
00053 
00054 
00058 class OsclComponentRegistryData
00059 {
00060     public:
00061         OsclComponentRegistryElement* Find(OSCL_String&, bool aExact);
00062         Oscl_Vector<OsclComponentRegistryElement, OsclMemAllocator> iVec;
00063 };
00064 
00068 #include "oscl_mutex.h"
00069 class OsclComponentRegistry
00070 {
00071     public:
00072         OsclComponentRegistry();
00073         ~OsclComponentRegistry();
00074         int32 Register(uint32& aId, OSCL_String&, OsclComponentFactory);
00075         int32 Unregister(OSCL_String&);
00076         int32 Unregister(uint32);
00077         OsclComponentFactory FindExact(OSCL_String&);
00078         void FindHierarchical(OSCL_String& , Oscl_Vector<OsclRegistryAccessElement, OsclMemAllocator>&);
00079         void OpenSession();
00080         void CloseSession();
00081 
00082         OsclComponentRegistryData iData;
00083         OsclMutex iMutex;
00084 
00085         uint32 iComponentIdCounter;
00086 
00087         uint32 iNumSessions;
00088 };
00089 
00090 
00091 #endif //OSCL_REGISTRY_IMPL_H_INCLUDED
00092 

OSCL API
Posting Version: CORE_8.000.1.1_RC4