MCPcopy Create free account
hub / github.com/ErrorAtLine0/infinipaint / init_server_callbacks

Method init_server_callbacks

src/ResourceManager.cpp:61–78  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

59}
60
61void ResourceManager::init_server_callbacks() {
62 world.netServer->add_recv_callback(CLIENT_NEW_RESOURCE_ID, [&](std::shared_ptr<NetServer::ClientData> client, cereal::PortableBinaryInputArchive& message) {
63 NetworkingObjects::NetObjID idBeingRetrieved;
64 message(idBeingRetrieved);
65 resourcesBeingRetrieved.emplace(idBeingRetrieved, client);
66 });
67 world.netServer->add_recv_callback(CLIENT_NEW_RESOURCE_DATA, [&](std::shared_ptr<NetServer::ClientData> client, cereal::PortableBinaryInputArchive& message) {
68 ResourceData newResource;
69 message(newResource);
70 auto it = std::find_if(resourcesBeingRetrieved.begin(), resourcesBeingRetrieved.end(), [&client](auto& p) {
71 return (!p.second.expired() && p.second.lock() == client);
72 });
73 resourceList.emplace_back(world.netObjMan.make_obj_direct_with_specific_id<ResourceData>(it->first, newResource));
74 world.netServer->send_items_to_all_clients_except(client, RESOURCE_COMMAND_CHANNEL, SERVER_NEW_RESOURCE_ID, resourceList.back().get_net_id());
75 world.netServer->send_items_to_all_clients_except(client, RESOURCE_COMMAND_CHANNEL, SERVER_NEW_RESOURCE_DATA, newResource);
76 resourcesBeingRetrieved.erase(it);
77 });
78}
79
80float ResourceManager::get_resource_retrieval_progress(const NetworkingObjects::NetObjID& id) {
81 auto resourceClientID = resourcesBeingRetrieved.find(id);

Callers 1

start_hostingMethod · 0.45

Calls 9

find_ifFunction · 0.85
expiredMethod · 0.80
lockMethod · 0.80
add_recv_callbackMethod · 0.45
beginMethod · 0.45
endMethod · 0.45
get_net_idMethod · 0.45
eraseMethod · 0.45

Tested by

no test coverage detected