From: Keith F. <ven...@us...> - 2004-06-11 07:31:25
|
Update of /cvsroot/planeshift/planeshift/src/server In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv14536 Modified Files: psserver.h psserver.cpp npcmanager.h npcmanager.cpp gem.h gem.cpp entitymanager.h entitymanager.cpp authentserver.h authentserver.cpp Log Message: Fixed npc DR compile errors and several bugs in direct-to-memory DR updates for npc batch updating. Still doesn't work quite right due to on-ground flag not being set correctly but I haven't figured out why yet. Index: psserver.h =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/server/psserver.h,v retrieving revision 1.80 retrieving revision 1.81 diff -C2 -d -r1.80 -r1.81 *** psserver.h 29 May 2004 10:45:08 -0000 1.80 --- psserver.h 11 Jun 2004 07:31:11 -0000 1.81 *************** *** 328,331 **** --- 328,332 ---- UserManager* usermanager; ExchangeManager* exchangemanager; + csRef<psAuthenticationServer> authserver; protected: *************** *** 348,352 **** csRef<iConfigManager> configmanager; csRef<ChatManager> chatmanager; - csRef<psAuthenticationServer> authserver; csRef<MsgHandler> msghandler; --- 349,352 ---- Index: psserver.cpp =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/server/psserver.cpp,v retrieving revision 1.151 retrieving revision 1.152 diff -C2 -d -r1.151 -r1.152 *** psserver.cpp 29 May 2004 10:45:08 -0000 1.151 --- psserver.cpp 11 Jun 2004 07:31:11 -0000 1.152 *************** *** 335,339 **** serverthread->GetConnections(), usermanager, - entitymanager->GetNetPersist(), guildmanager)); Debug1(LOG_STARTUP,"Started Authentication Server\n"); --- 335,338 ---- Index: npcmanager.h =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/server/npcmanager.h,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** npcmanager.h 14 Dec 2003 23:08:04 -0000 1.13 --- npcmanager.h 11 Jun 2004 07:31:11 -0000 1.14 *************** *** 49,53 **** void SendNPCList(Client *client); void Disconnect(Client *client); - void BroadcastEntity(psNetPersist *net, iCelEntity *entity, int PlayerID); void RemoveEntity(MsgEntry *me); --- 49,52 ---- Index: npcmanager.cpp =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/server/npcmanager.cpp,v retrieving revision 1.38 retrieving revision 1.39 diff -C2 -d -r1.38 -r1.39 *** npcmanager.cpp 30 May 2004 07:56:42 -0000 1.38 --- npcmanager.cpp 11 Jun 2004 07:31:11 -0000 1.39 *************** *** 29,32 **** --- 29,33 ---- #include "npcmanager.h" #include "combatmanager.h" + #include "authentserver.h" #include "util/log.h" #include "util/psconst.h" *************** *** 212,215 **** --- 213,218 ---- superclients.Push(pd); + psserver->authserver->SendMsgStrings(me->clientnum); + SendMapList(client); delete acctinfo; *************** *** 325,333 **** { // extract the data - CS_ID id = list.msg->GetUInt32(); - Debug2(LOG_NPC,"-->Got DR data for entity %d\n",id); - uint32_t len; void *data = list.msg->GetData(&len); // Make sure we haven't run past the end of the buffer --- 328,336 ---- { // extract the data uint32_t len; void *data = list.msg->GetData(&len); + + // Debug2(LOG_NPC,"-->Got DR data for entity %d\n",id); + // Make sure we haven't run past the end of the buffer *************** *** 337,354 **** break; } ! // copy the DR data into an iDataBuffer csRef<iDataBuffer> databuf = csPtr<iDataBuffer> (new csDataBuffer (len)); memcpy(databuf->GetData(), data, len); // find the entity and Set the DR data for it ! gemNPC *actor = (gemNPC *)entitymanager->GetGEM()->FindObject(id); if (!actor) { ! printf("Illegal CS_ID %d from superclient!\n",id); } else { - psDRMessage drmsg(data,len); // alternate method of cracking - // Go ahead and update the server version actor->SetDRData(drmsg); --- 340,359 ---- break; } ! ! psDRMessage drmsg(data,len, ! psServer::cachemanager.GetMsgStrings(), ! psserver->GetEntityManager()->GetEngine()); // alternate method of cracking ! // copy the DR data into an iDataBuffer csRef<iDataBuffer> databuf = csPtr<iDataBuffer> (new csDataBuffer (len)); memcpy(databuf->GetData(), data, len); // find the entity and Set the DR data for it ! gemNPC *actor = (gemNPC *)entitymanager->GetGEM()->FindObject(drmsg.entityid); if (!actor) { ! Error2("Illegal CS_ID %d from superclient!\n",drmsg.entityid); } else { // Go ahead and update the server version actor->SetDRData(drmsg); *************** *** 397,405 **** } - void NPCManager::BroadcastEntity(psNetPersist *net, iCelEntity *entity, int PlayerID) - { - // printf("NPCManager broadcasting CEL Object '%s' to superclients.\n",entity->GetName() ); - net->BroadcastEntity((uint32_t)-1,entity,PlayerID,superclients); - } void NPCManager::RemoveEntity(MsgEntry *me) --- 402,405 ---- Index: gem.h =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/server/gem.h,v retrieving revision 1.35 retrieving revision 1.36 diff -C2 -d -r1.35 -r1.36 *** gem.h 30 May 2004 07:56:42 -0000 1.35 --- gem.h 11 Jun 2004 07:31:11 -0000 1.36 *************** *** 65,69 **** csRef<iObjectRegistry> object_reg; csRef<iCelPlLayer> pl; - psNetPersist *netpersist; psDatabase *database; MsgHandler *msghandler; --- 65,68 ---- *************** *** 73,77 **** GEMSupervisor(iObjectRegistry *objreg, iCelPlLayer *player, - psNetPersist *net, MsgHandler *msgh, psDatabase *db); --- 72,75 ---- *************** *** 123,126 **** --- 121,125 ---- class gemNPC; class ClientConnectionSet; + class PublishVector; /** Index: gem.cpp =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/server/gem.cpp,v retrieving revision 1.69 retrieving revision 1.70 diff -C2 -d -r1.69 -r1.70 *** gem.cpp 10 Jun 2004 00:53:21 -0000 1.69 --- gem.cpp 11 Jun 2004 07:31:11 -0000 1.70 *************** *** 102,106 **** GEMSupervisor::GEMSupervisor(iObjectRegistry *objreg, iCelPlLayer *p_layer, - psNetPersist *net, MsgHandler *msgh, psDatabase *db) --- 102,105 ---- *************** *** 108,112 **** object_reg = objreg; pl = p_layer; - netpersist = net; database = db; msghandler = msgh; --- 107,110 ---- Index: entitymanager.h =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/server/entitymanager.h,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** entitymanager.h 30 May 2004 07:56:42 -0000 1.7 --- entitymanager.h 11 Jun 2004 07:31:11 -0000 1.8 *************** *** 25,29 **** class ClientConnectionSet; class psServerDR; - class psNetPersist; class psServer; class psDatabase; --- 25,28 ---- *************** *** 62,66 **** virtual void HandleMessage(MsgEntry* me); - psNetPersist *GetNetPersist() { return netpersist; }; bool RemoveActor(gemObject *actor); --- 61,64 ---- *************** *** 101,105 **** MsgHandler* msghandler; psServerDR* serverdr; - psNetPersist* netpersist; ClientConnectionSet* clients; psDatabase* database; --- 99,102 ---- Index: entitymanager.cpp =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/server/entitymanager.cpp,v retrieving revision 1.40 retrieving revision 1.41 diff -C2 -d -r1.40 -r1.41 *** entitymanager.cpp 30 May 2004 07:56:42 -0000 1.40 --- entitymanager.cpp 11 Jun 2004 07:31:11 -0000 1.41 *************** *** 86,90 **** msghandler = NULL; serverdr = NULL; - netpersist = NULL; psserver = NULL; ready = hasBeenReady = false; --- 86,89 ---- *************** *** 94,99 **** EntityManager::~EntityManager() { - if (netpersist) - delete netpersist; if (serverdr) delete serverdr; --- 93,96 ---- *************** *** 134,142 **** EntityManager::psserver = psserver; ! netpersist = new psNetPersist; ! if (!netpersist->Initialize(object_reg, this, msghandler, psNetPersist::NO_MAPPING)) ! return false; ! ! gem = new GEMSupervisor(object_reg,pl,netpersist,msghandler,psserver->GetDatabase()); serverdr = new psServerDR; --- 131,135 ---- EntityManager::psserver = psserver; ! gem = new GEMSupervisor(object_reg,pl,msghandler,psserver->GetDatabase()); serverdr = new psServerDR; Index: authentserver.h =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/server/authentserver.h,v retrieving revision 1.23 retrieving revision 1.24 diff -C2 -d -r1.23 -r1.24 *** authentserver.h 21 Feb 2004 17:57:57 -0000 1.23 --- authentserver.h 11 Jun 2004 07:31:12 -0000 1.24 *************** *** 30,34 **** class UserManager; class GuildManager; - class psNetPersist; class Client; --- 30,33 ---- *************** *** 52,58 **** /// Is the user manager. UserManager *usermanager; - - /// Is responsible for all persistence over the network. - psNetPersist *netpersist; /// Is a manager for the guilds. --- 51,54 ---- *************** *** 112,116 **** */ psAuthenticationServer(MsgHandler *myMsgQueue,ClientConnectionSet *pCCS, ! UserManager *usermgr,psNetPersist *netpersist, GuildManager *gm); --- 108,112 ---- */ psAuthenticationServer(MsgHandler *myMsgQueue,ClientConnectionSet *pCCS, ! UserManager *usermgr, GuildManager *gm); *************** *** 144,147 **** --- 140,148 ---- */ void SendDisconnect(Client* client,const char *reason); + + /** Util function to send string hash to client, because authentserver and + * npcmanager both send these. + */ + void SendMsgStrings(int cnum); }; Index: authentserver.cpp =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/server/authentserver.cpp,v retrieving revision 1.104 retrieving revision 1.105 diff -C2 -d -r1.104 -r1.105 *** authentserver.cpp 23 May 2004 17:51:05 -0000 1.104 --- authentserver.cpp 11 Jun 2004 07:31:12 -0000 1.105 *************** *** 48,52 **** ClientConnectionSet *pCCS, UserManager *usermgr, - psNetPersist *persist, GuildManager *gm) { --- 48,51 ---- *************** *** 56,60 **** clients = pCCS; usermanager = usermgr; - netpersist = persist; guildmanager = gm; msgstringsmessage = NULL; --- 55,58 ---- *************** *** 349,370 **** client->GetIPAddress(addr); - // send message strings hash table to client - if (!msgstringsmessage) - msgstringsmessage = new psMsgStringsMessage(me->clientnum, psServer::cachemanager.GetMsgStrings()); - else - msgstringsmessage->msg->clientnum = me->clientnum; - if (!msgstringsmessage->valid) - { - Bug1("Could not form a valid psMsgStringsMessage from Message Strings!\n"); - delete msgstringsmessage; - msgstringsmessage=NULL; - } - else - msghandler->SendMessage(msgstringsmessage->msg); - psAuthApprovedMessage message(me->clientnum,client->GetPlayerID()); if (message.valid) msghandler->SendMessage(message.msg); ! // Send out the character list to the auth'd player int i; --- 347,356 ---- client->GetIPAddress(addr); psAuthApprovedMessage message(me->clientnum,client->GetPlayerID()); if (message.valid) msghandler->SendMessage(message.msg); ! ! SendMsgStrings(me->clientnum); ! // Send out the character list to the auth'd player int i; *************** *** 429,430 **** --- 415,432 ---- } + void psAuthenticationServer::SendMsgStrings(int cnum) + { + // send message strings hash table to client + if (!msgstringsmessage) + msgstringsmessage = new psMsgStringsMessage(cnum, psServer::cachemanager.GetMsgStrings()); + else + msgstringsmessage->msg->clientnum = cnum; + if (!msgstringsmessage->valid) + { + Bug1("Could not form a valid psMsgStringsMessage from Message Strings!\n"); + delete msgstringsmessage; + msgstringsmessage=NULL; + } + else + msghandler->SendMessage(msgstringsmessage->msg); + } |