1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- #ifndef NULLSOFT_SERVICEMANAGERH
- #define NULLSOFT_SERVICEMANAGERH
- #include <api/service/api_service.h>
- #include "../nu/AutoLock.h"
- #include <vector>
- #include <map>
- struct Counter;
- class ServiceManager : public api_service
- {
- public:
- ServiceManager();
- int service_register( waServiceFactory *svc );
- int service_deregister( waServiceFactory *svc );
- size_t service_getNumServices( FOURCC svc_type );
- waServiceFactory *service_enumService( FOURCC svc_type, size_t n );
- waServiceFactory *service_getServiceByGuid( GUID guid );
- int service_lock( waServiceFactory *owner, void *svcptr );
- int service_clientLock( void *svcptr );
- int service_release( void *svcptr );
- const char *service_getTypeName( FOURCC svc_type );
- int service_unlock( void *svcptr );
- int service_isvalid( FOURCC svctype, waServiceFactory *service );
- int service_compactDuplicates( waServiceFactory *me );
-
- protected:
- RECVS_DISPATCH;
-
- private:
- Nullsoft::Utility::LockGuard serviceGuard;
- typedef std::vector<waServiceFactory *> ServiceList;
- ServiceList services;
- std::vector<Counter *> locks;
- std::map<FOURCC, ServiceList *> services_by_type;
- };
- extern api_service *serviceManager;
- #endif
|