nsemu/Service/Sm.cpp

42 lines
1.4 KiB
C++
Raw Normal View History

/* nsemu - LGPL - Copyright 2018 rkx1209<rkx1209dev@gmail.com> */
#include "Nsemu.hpp"
#include "IpcStubs.hpp"
uint32_t SmService::Initialize() {
return 0;
}
2018-07-03 06:38:11 -04:00
uint32_t SmService::GetService(ServiceName _name, IpcService*& service) {
2018-04-14 11:18:44 -04:00
std::string name = (char *) _name;
if (IPC::services.find(name) == IPC::services.end()) {
ns_print("Unknown service name %s\n", name.c_str());
2018-07-16 04:00:01 -04:00
//return 0xC15; //error code
return 0x415; //error code
2018-04-14 11:18:44 -04:00
}
2018-06-06 08:54:13 -04:00
service = IPC::services[name];
2018-07-03 06:38:11 -04:00
ns_print("Found: %s => %p\n", name.c_str(), (void *)service);
2018-04-14 11:18:44 -04:00
return 0;
}
2018-07-03 06:38:11 -04:00
uint32_t SmService::RegisterService(ServiceName _name, IpcService*& service) {
2018-06-06 08:54:13 -04:00
std::string name = (char *) _name;
IpcService *new_srv = new IpcService();
2018-07-03 09:55:27 -04:00
ns_print("Registering service %s\n", _name);
2018-06-06 08:54:13 -04:00
IPC::services[name] = new_srv;
service = new_srv;
2018-04-14 11:18:44 -04:00
return 0;
}
2018-06-06 08:54:13 -04:00
uint32_t SmService::UnregisterService(ServiceName _name) {
std::string name = (char *) _name;
auto it = IPC::services.find(name);
if (it == IPC::services.end()) {
ns_print("Unknown service name %s\n", _name);
return 0xC15; //error code
}
IpcService *srv = it->second;
2018-07-03 09:55:27 -04:00
ns_print("Unregistering service %s\n", _name);
2018-06-06 08:54:13 -04:00
delete srv;
IPC::services.erase(it);
return 0;
2018-04-14 11:18:44 -04:00
}