Completely removed MainServer code. All server code is now part of the program

This commit is contained in:
Yousef Khadadeh 2025-12-17 14:46:27 +03:00
parent 0b67c9cc46
commit 26d807ce87
31 changed files with 459 additions and 512 deletions

View file

@ -91,7 +91,6 @@ namespace NetworkingObjects {
}
template <typename T> static void send_client_update(const NetObjTemporaryPtr<T>& ptr, const std::string& channel, std::function<void(const NetObjTemporaryPtr<T>&, cereal::PortableBinaryOutputArchive&)> sendUpdateFunc) {
assert(!isServer);
if(ptr.get_obj_man()->client && !ptr.get_obj_man()->client->is_disconnected()) {
auto ss(std::make_shared<std::stringstream>());
{
@ -104,7 +103,6 @@ namespace NetworkingObjects {
}
template <typename T> static void send_server_update_to_client(const NetObjTemporaryPtr<T>& ptr, const std::shared_ptr<NetServer::ClientData>& clientToSendTo, const std::string& channel, std::function<void(const NetObjTemporaryPtr<T>&, cereal::PortableBinaryOutputArchive&)> sendUpdateFunc) {
assert(isServer);
if(ptr.get_obj_man()->server && !ptr.get_obj_man()->server->is_disconnected()) {
auto ss(std::make_shared<std::stringstream>());
{
@ -117,7 +115,6 @@ namespace NetworkingObjects {
}
template <typename T> static void send_server_update_to_all_clients_except(const NetObjTemporaryPtr<T>& ptr, const std::shared_ptr<NetServer::ClientData>& clientToNotSendTo, const std::string& channel, std::function<void(const NetObjTemporaryPtr<T>&, cereal::PortableBinaryOutputArchive&)> sendUpdateFunc) {
assert(isServer);
if(ptr.get_obj_man()->server && !ptr.get_obj_man()->server->is_disconnected()) {
auto ss(std::make_shared<std::stringstream>());
{
@ -130,7 +127,6 @@ namespace NetworkingObjects {
}
template <typename T> static void send_server_update_to_all_clients(const NetObjTemporaryPtr<T>& ptr, const std::string& channel, std::function<void(const NetObjTemporaryPtr<T>&, cereal::PortableBinaryOutputArchive&)> sendUpdateFunc) {
assert(isServer);
if(ptr.get_obj_man()->server && !ptr.get_obj_man()->server->is_disconnected()) {
auto ss(std::make_shared<std::stringstream>());
{

View file

@ -47,7 +47,7 @@ namespace NetworkingObjects {
}
bool contains(const NetObjID& p) const {
return std::find_if(data.begin(), data.end(), [&p](const NetObjOwnerPtr<T>& o){ o.get_net_id() == p; }) != data.end();
return std::find_if(data.begin(), data.end(), [&p](const NetObjOwnerPtr<T>& o){ return o.get_net_id() == p; }) != data.end();
}
const std::vector<NetObjOwnerPtr<T>>& get_data() const {
return data;
@ -68,7 +68,7 @@ namespace NetworkingObjects {
}
bool erase_by_id(const NetObjTemporaryPtr<NetObjUnorderedSet<T>>& l, const NetObjID& id) {
auto it = std::find_if(this->data.begin(), this->data.end(), [&id](const NetObjOwnerPtr<T>& o){ o.get_net_id() == id; });
auto it = std::find_if(this->data.begin(), this->data.end(), [&id](const NetObjOwnerPtr<T>& o){ return o.get_net_id() == id; });
if(it == this->data.end())
return false;
call_erase_callback(*it);
@ -77,14 +77,14 @@ namespace NetworkingObjects {
return true;
}
virtual void insert_network(const NetObjTemporaryPtr<NetObjUnorderedSet<T>>& l, const std::shared_ptr<NetServer::ClientData>& clientInserting, NetObjOwnerPtr<T> newObj) const = 0;
virtual void insert_network(const NetObjTemporaryPtr<NetObjUnorderedSet<T>>& l, const std::shared_ptr<NetServer::ClientData>& clientInserting, const NetObjOwnerPtr<T>& newObj) const = 0;
virtual void erase_network(const NetObjTemporaryPtr<NetObjUnorderedSet<T>>& l, const NetObjID& id) const = 0;
virtual void read_update(const NetObjTemporaryPtr<NetObjUnorderedSet<T>>& l, cereal::PortableBinaryInputArchive& a, const std::shared_ptr<NetServer::ClientData>&) = 0;
void write_constructor(const NetObjTemporaryPtr<NetObjUnorderedSet<T>>& l, cereal::PortableBinaryOutputArchive& a) {
a(static_cast<uint32_t>(data.size()));
for(size_t i = 0; i < data.size(); i++)
data[i]->obj.write_create_message(a);
data[i].write_create_message(a);
}
void read_constructor(const NetObjTemporaryPtr<NetObjUnorderedSet<T>>& l, cereal::PortableBinaryInputArchive& a, const std::shared_ptr<NetServer::ClientData>& c) {
@ -128,7 +128,7 @@ namespace NetworkingObjects {
public:
NetObjUnorderedSetServer() {}
protected:
virtual void insert_network(const NetObjTemporaryPtr<NetObjUnorderedSet<T>>& l, const std::shared_ptr<NetServer::ClientData>& clientInserting, NetObjOwnerPtr<T> newObj) const override {
virtual void insert_network(const NetObjTemporaryPtr<NetObjUnorderedSet<T>>& l, const std::shared_ptr<NetServer::ClientData>& clientInserting, const NetObjOwnerPtr<T>& newObj) const override {
l.send_server_update_to_all_clients_except(clientInserting, RELIABLE_COMMAND_CHANNEL, [&newObj](const NetObjTemporaryPtr<NetObjUnorderedSet<T>>&, cereal::PortableBinaryOutputArchive& a) {
a(ObjPtrUnorderedSetCommand_StoC::INSERT_SINGLE_CONSTRUCT);
newObj.write_create_message(a);
@ -144,13 +144,13 @@ namespace NetworkingObjects {
a(command);
switch(command) {
case ObjPtrUnorderedSetCommand_CtoS::INSERT_SINGLE: {
insert(l, c, l.get_obj_man()->template read_create_message<T>(a, c));
NetObjUnorderedSet<T>::insert(l, c, l.get_obj_man()->template read_create_message<T>(a, c));
break;
}
case ObjPtrUnorderedSetCommand_CtoS::ERASE_SINGLE: {
NetObjID idToErase;
a(idToErase);
erase_by_id(l, idToErase);
NetObjUnorderedSet<T>::erase_by_id(l, idToErase);
break;
}
}
@ -161,7 +161,7 @@ namespace NetworkingObjects {
public:
NetObjUnorderedSetClient() {}
protected:
virtual void insert_network(const NetObjTemporaryPtr<NetObjUnorderedSet<T>>& l, const std::shared_ptr<NetServer::ClientData>&, NetObjOwnerPtr<T> newObj) const override {
virtual void insert_network(const NetObjTemporaryPtr<NetObjUnorderedSet<T>>& l, const std::shared_ptr<NetServer::ClientData>&, const NetObjOwnerPtr<T>& newObj) const override {
l.send_client_update(RELIABLE_COMMAND_CHANNEL, [&newObj](const NetObjTemporaryPtr<NetObjUnorderedSet<T>>&, cereal::PortableBinaryOutputArchive& a) {
a(ObjPtrUnorderedSetCommand_CtoS::INSERT_SINGLE);
newObj.write_create_message(a);
@ -183,7 +183,7 @@ namespace NetworkingObjects {
case ObjPtrUnorderedSetCommand_StoC::ERASE_SINGLE: {
NetObjID id;
a(id);
auto it = std::find_if(this->data.begin(), this->data.end(), [&id](const NetObjOwnerPtr<T>& o){ o.get_net_id() == id; });
auto it = std::find_if(this->data.begin(), this->data.end(), [&id](const NetObjOwnerPtr<T>& o){ return o.get_net_id() == id; });
if(it != this->data.end())
this->data.erase(it);
break;