Guest User

Untitled

a guest
Jun 24th, 2018
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.75 KB | None | 0 0
  1. Index: src/ChannelServer/ChannelServer.cpp
  2. ===================================================================
  3. --- src/ChannelServer/ChannelServer.cpp (revision 2118)
  4. +++ src/ChannelServer/ChannelServer.cpp (working copy)
  5. @@ -81,3 +83,8 @@
  6. }
  7. }
  8. }
  9. +
  10. +void ChannelServer::shutdown() {
  11. + connected = false;
  12. + ConnectionManager::Instance()->stop();
  13. +}
  14. \ No newline at end of file
  15.  
  16. Index: src/ChannelServer/ChannelServer.h
  17. ===================================================================
  18. --- src/ChannelServer/ChannelServer.h (revision 2118)
  19. +++ src/ChannelServer/ChannelServer.h (working copy)
  20. @@ -39,6 +39,7 @@
  21. void loadData();
  22. void loadConfig();
  23. void listen();
  24. + void shutdown();
  25. void connectWorld();
  26. void sendToWorld(PacketCreator &packet);
  27.  
  28. @@ -54,6 +55,7 @@
  29. void setMaxStats(int16_t max) { this->maxStats = max; }
  30. void setScrollingHeader(const string &message);
  31. void setWorldIp(uint32_t ip) { world_ip = ip; }
  32. + void setConnected(bool val) { connected = val; }
  33.  
  34. int8_t getWorld() const { return world; }
  35. uint8_t getMaxMultiLevel() const { return maxMultiLevel; }
  36. @@ -66,6 +68,7 @@
  37. int32_t getDroprate() const { return droprate; }
  38. string getScrollingHeader() const { return scrollingHeader; }
  39. WorldServerConnectPlayer * getWorldPlayer() const { return worldPlayer; }
  40. + bool isConnected() const { return connected; }
  41. private:
  42. ChannelServer() {};
  43. static ChannelServer *singleton;
  44. @@ -86,6 +89,7 @@
  45. uint32_t login_ip;
  46. uint32_t world_ip;
  47. string scrollingHeader;
  48. + bool connected;
  49. };
  50.  
  51. #endif
  52. Index: src/ChannelServer/WorldServerConnectHandler.cpp
  53. ===================================================================
  54. --- src/ChannelServer/WorldServerConnectHandler.cpp (revision 2118)
  55. +++ src/ChannelServer/WorldServerConnectHandler.cpp (working copy)
  56.  
  57. void WorldServerConnectHandler::connectLogin(WorldServerConnectPlayer *player, PacketReader &packet) {
  58. int8_t worldid = packet.get<int8_t>();
  59. if (worldid != -1) {
  60. + ChannelServer::Instance()->setConnected(false);
  61. ChannelServer::Instance()->setWorld(worldid);
  62. ChannelServer::Instance()->setWorldIp(packet.get<uint32_t>());
  63. ChannelServer::Instance()->setWorldPort(packet.get<int16_t>());
  64. @@ -55,6 +62,7 @@
  65. ChannelServer::Instance()->setMaxStats(packet.get<int16_t>());
  66. ChannelServer::Instance()->listen();
  67. std::cout << "Handling channel " << channel << " on port " << port << std::endl;
  68. + ChannelServer::Instance()->setConnected(true);
  69. }
  70. else {
  71. std::cout << "Error: No channel to handle" << std::endl;
  72.  
  73. Index: src/ChannelServer/WorldServerConnectPlayer.cpp
  74. ===================================================================
  75. --- src/ChannelServer/WorldServerConnectPlayer.cpp (revision 2118)
  76. +++ src/ChannelServer/WorldServerConnectPlayer.cpp (working copy)
  77. @@ -16,6 +16,7 @@
  78. Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  79. */
  80. #include "WorldServerConnectPlayer.h"
  81. +#include "ChannelServer.h"
  82. #include "BuffHolder.h"
  83. #include "InterHeader.h"
  84. #include "PacketReader.h"
  85. @@ -29,6 +30,13 @@
  86. type = InterChannelServer;
  87. }
  88.  
  89. +WorldServerConnectPlayer::~WorldServerConnectPlayer() {
  90. + if (ChannelServer::Instance()->isConnected()) {
  91. + std::cout << "Disconnected from the worldserver. Shutting down..." << std::endl;
  92. + exit(6);
  93. + }
  94. +}
  95. +
  96. void WorldServerConnectPlayer::realHandleRequest(PacketReader &packet) {
  97. switch (packet.get<int16_t>()) {
  98. case INTER_LOGIN_CHANNEL_CONNECT: WorldServerConnectHandler::connectLogin(this, packet); break;
  99.  
  100. Index: src/ChannelServer/WorldServerConnectPlayer.h
  101. ===================================================================
  102. --- src/ChannelServer/WorldServerConnectPlayer.h (revision 2118)
  103. +++ src/ChannelServer/WorldServerConnectPlayer.h (working copy)
  104. @@ -26,6 +26,7 @@
  105. class WorldServerConnectPlayer : public AbstractServerConnectPlayer {
  106. public:
  107. WorldServerConnectPlayer();
  108. + ~WorldServerConnectPlayer();
  109. void realHandleRequest(PacketReader &packet);
  110. void playerChangeChannel(int32_t playerid, uint16_t channel, PlayerActiveBuffs *playerbuffs);
  111. };
  112. Index: src/LoginServer/LoginServerAcceptPlayer.cpp
  113. ===================================================================
  114. --- src/LoginServer/LoginServerAcceptPlayer.cpp (revision 2118)
  115. +++ src/LoginServer/LoginServerAcceptPlayer.cpp (working copy)
  116. @@ -24,6 +24,14 @@
  117. #include "RankingCalculator.h"
  118. #include "Worlds.h"
  119.  
  120. +LoginServerAcceptPlayer::~LoginServerAcceptPlayer() {
  121. + if (worldId != -1) {
  122. + Worlds::worlds[worldId]->connected = false;
  123. + Worlds::worlds[worldId]->channels.clear(); // Remove the channels (they will automaticly disconnect)
  124. + std::cout << "World " << (int32_t) worldId << " disconnected." << std::endl;
  125. + }
  126. +}
  127. +
  128. void LoginServerAcceptPlayer::realHandleRequest(PacketReader &packet) {
  129. if (!processAuth(packet, LoginServer::Instance()->getInterPassword())) return;
  130. switch (packet.get<int16_t>()) {
  131. Index: src/LoginServer/LoginServerAcceptPlayer.h
  132. ===================================================================
  133. --- src/LoginServer/LoginServerAcceptPlayer.h (revision 2118)
  134. +++ src/LoginServer/LoginServerAcceptPlayer.h (working copy)
  135. @@ -25,6 +25,7 @@
  136.  
  137. class LoginServerAcceptPlayer : public AbstractServerAcceptPlayer {
  138. public:
  139. + ~LoginServerAcceptPlayer();
  140. void realHandleRequest(PacketReader &packet);
  141. void authenticated(int8_t type);
  142.  
  143. Index: src/LoginServer/Worlds.cpp
  144. ===================================================================
  145. --- src/LoginServer/Worlds.cpp (revision 2118)
  146. +++ src/LoginServer/Worlds.cpp (working copy)
  147. @@ -86,6 +87,7 @@
  148. }
  149.  
  150. int8_t Worlds::connectChannelServer(LoginServerAcceptPlayer *player) {
  151. + player->setWorldId(-1);
  152. int8_t worldid = -1;
  153. int16_t port;
  154. AbstractServerAcceptPlayer *worldPlayer;
Add Comment
Please, Sign In to add comment