![]() |
Max OS 0.3
|
Manages the creation, retention and destruction of resources of a certain type. Should be subclassed for each resource type. More...
#include <resource.h>
Public Member Functions | |
| BaseResourceRegistry (resource_type_t type) | |
| Constructs a new BaseResourceRegistry object and registers it globally. | |
| ~BaseResourceRegistry () | |
| Destructor for BaseResourceRegistry, removes it from the global list. | |
| resource_type_t | type () |
| Gets the type of resources this registry handles. | |
| virtual Resource * | get_resource (const string &name) |
| Gets a resource from the registry by name. | |
| virtual bool | register_resource (Resource *resource) |
| Registers a resource in the registry. | |
| virtual void | close_resource (Resource *resource, size_t flags) |
| Close the resource provided, if it exists in this registry. | |
| virtual Resource * | create_resource (const string &name, size_t flags) |
| Try to create a new resource with the specified name, will fail if the name is in use. | |
Protected Attributes | |
| common::Map< string, Resource * > | m_resources |
| The map of resource names to resource instances. | |
| common::Map< string, uint64_t > | m_resource_uses |
| The map of resource names to how many processes are using them. | |
| resource_type_t | m_type |
| The resource type that this registry manages. | |
Manages the creation, retention and destruction of resources of a certain type. Should be subclassed for each resource type.
Definition at line 54 of file resource.h.
|
explicit |
Constructs a new BaseResourceRegistry object and registers it globally.
| type | The type of resources this registry will handle |
Definition at line 98 of file resource.cpp.
References MaxOS::processes::GlobalResourceRegistry::add_registry(), and type().
| BaseResourceRegistry::~BaseResourceRegistry | ( | ) |
Destructor for BaseResourceRegistry, removes it from the global list.
Definition at line 107 of file resource.cpp.
References MaxOS::processes::GlobalResourceRegistry::remove_registry().
|
virtual |
Close the resource provided, if it exists in this registry.
| resource | The resource to close |
| flags | Optional flags to pass (unused by default but registry type specific) |
Definition at line 164 of file resource.cpp.
References MaxOS::processes::Resource::close(), MaxOS::common::Map< Key, Value >::erase(), m_resource_uses, m_resources, and MaxOS::processes::Resource::name().
Try to create a new resource with the specified name, will fail if the name is in use.
| name | The name of the resource to create |
| flags | Optional flags to pass (unused by default but registry type specific) |
Reimplemented in MaxOS::filesystem::VFSResourceRegistry, MaxOS::processes::ResourceRegistry< Type >, MaxOS::processes::ResourceRegistry< MaxOS::processes::SharedMemory >, and MaxOS::processes::ResourceRegistry< MaxOS::processes::SharedMessageEndpoint >.
Definition at line 190 of file resource.cpp.
Gets a resource from the registry by name.
| name | The name of the resource to find |
Reimplemented in MaxOS::filesystem::VFSResourceRegistry.
Definition at line 128 of file resource.cpp.
References m_resource_uses, and m_resources.
Referenced by MaxOS::filesystem::VFSResourceRegistry::create_resource(), and MaxOS::filesystem::VFSResourceRegistry::get_resource().
|
virtual |
Registers a resource in the registry.
| resource | The resource to store |
Definition at line 146 of file resource.cpp.
References MaxOS::common::Map< Key, Value >::insert(), m_resource_uses, m_resources, and MaxOS::processes::Resource::name().
Referenced by MaxOS::processes::ResourceRegistry< Type >::create_resource().
| resource_type_t BaseResourceRegistry::type | ( | ) |
Gets the type of resources this registry handles.
Definition at line 117 of file resource.cpp.
References m_type.
Referenced by BaseResourceRegistry(), MaxOS::processes::ResourceRegistry< Type >::create_resource(), and MaxOS::processes::GlobalResourceRegistry::remove_registry().
|
protected |
The map of resource names to how many processes are using them.
Definition at line 58 of file resource.h.
Referenced by close_resource(), get_resource(), and register_resource().
|
protected |
The map of resource names to resource instances.
Definition at line 57 of file resource.h.
Referenced by close_resource(), get_resource(), and register_resource().
|
protected |
The resource type that this registry manages.
Definition at line 60 of file resource.h.
Referenced by type().