Browse Source

containers use id insted of name

vlod 3 years ago
parent
commit
3642e38c70

+ 18 - 17
Pika/core/pikaRuntime/containerManager/containerManager.cpp

@@ -3,17 +3,18 @@
 #include "containerManager.h"
 #include <globalAllocator/globalAllocator.h>
 
-bool pika::ContainerManager::createContainer
-(std::string name, pika::ContainerInformation containerInformation,
+pika::containerId_t pika::ContainerManager::createContainer
+(pika::ContainerInformation containerInformation,
 	pika::DllLoader &dllLoader, pika::LogManager &logManager)
-{
-	//todo containers should have an id rather than name
-	if (runningContainers.find(name) != runningContainers.end())
-	{
-		logManager.log((std::string("Container name already exists: ") + name).c_str(), pika::logError);
-		return false;
-	}
-
+{	
+	containerId_t id = ++idCounter;
+	
+	//not necessary if this is the only things that assigns ids.
+	//if (runningContainers.find(id) != runningContainers.end())
+	//{
+	//	logManager.log((std::string("Container id already exists: #") + std::to_string(id)).c_str(), pika::logError);
+	//	return false;
+	//}
 
 	pika::RuntimeContainer container = {};
 	container.arena.allocateStaticMemory(containerInformation); //this just allocates the staic memory
@@ -28,12 +29,12 @@ bool pika::ContainerManager::createContainer
 	{
 		dllLoader.resetAllocatorDllRealm();
 
-		logManager.log((std::string("Couldn't construct container: ") + name).c_str(), pika::logError);
+		logManager.log((std::string("Couldn't construct container: #") + std::to_string(id)).c_str(), pika::logError);
 
 		container.arena.dealocateStaticMemory(); //static memory
 		free(container.allocator.originalBaseMemory); //heap memory
 
-		return false;
+		return 0;
 	}
 	dllLoader.resetAllocatorDllRealm();
 
@@ -49,9 +50,9 @@ bool pika::ContainerManager::createContainer
 	container.pointer->create(container.requestedContainerInfo); //this calls create() (from the dll realm)
 	dllLoader.resetAllocatorDllRealm();//sets the global allocator back to standard (used for runtime realm)
 
-	runningContainers[name] = container;
+	runningContainers[id] = container;
 
-	return true;
+	return id;
 }
 
 void pika::ContainerManager::init()
@@ -71,13 +72,13 @@ void pika::ContainerManager::update(pika::DllLoader &dllLoader,
 
 }
 
-bool pika::ContainerManager::destroyContainer(std::string name, pika::DllLoader &dllLoader,
+bool pika::ContainerManager::destroyContainer(containerId_t id, pika::DllLoader &dllLoader,
 	pika::LogManager &logManager)
 {
-	auto c = runningContainers.find(name);
+	auto c = runningContainers.find(id);
 	if (c == runningContainers.end())
 	{
-		logManager.log((std::string("Couldn't find container for destruction: ") + name).c_str(),
+		logManager.log((std::string("Couldn't find container for destruction: #") + std::to_string(id)).c_str(),
 			pika::logError);
 		return false;
 	}

+ 8 - 5
Pika/core/pikaRuntime/containerManager/containerManager.h

@@ -12,15 +12,16 @@
 
 namespace pika
 {
-
+	using containerId_t = unsigned int;
 	
 	struct ContainerManager
 	{
 
-		std::unordered_map<std::string, pika::RuntimeContainer> runningContainers;
 
-		bool createContainer(
-			std::string name, pika::ContainerInformation containerInformation,
+		std::unordered_map<containerId_t, pika::RuntimeContainer> runningContainers;
+
+		containerId_t createContainer(
+			pika::ContainerInformation containerInformation,
 			pika::DllLoader &dllLoader, pika::LogManager &logManager);
 
 		void init();
@@ -31,11 +32,13 @@ namespace pika
 			float deltaTime,
 			pika::WindowState windowState);
 
-		bool destroyContainer(std::string name, pika::DllLoader &dllLoader,
+		bool destroyContainer(containerId_t id, pika::DllLoader &dllLoader,
 			pika::LogManager &logManager);
 
 		void destroyAllContainers(pika::DllLoader &dllLoader,
 			pika::LogManager &logManager);
+
+		containerId_t idCounter = 0;
 	};
 
 

+ 1 - 6
Pika/core/pikaRuntime/pikaMain.cpp

@@ -98,12 +98,7 @@ int main()
 #pragma endregion
 
 	
-	logs.log("test log");
-	logs.log("warning log", pika::logWarning);
-	logs.log("error log", pika::logError);
-
-	containerManager.createContainer("Main level",
-		loadedContainers[0], dllLoader, logs);
+	auto container = containerManager.createContainer(loadedContainers[0], dllLoader, logs);
 
 	while (!window.shouldClose())
 	{

+ 3 - 3
Pika/resources/logs.txt

@@ -1,3 +1,3 @@
-#2022-09-24 16:30:37: test log
-#2022-09-24 16:30:37[warning]: warning log
-#2022-09-24 16:30:37[error]: error log
+#2022-09-25 21:30:55: test log
+#2022-09-25 21:30:55[warning]: warning log
+#2022-09-25 21:30:55[error]: error log