NetworkServer.h 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. /*
  2. * NetworkServer.h, part of VCMI engine
  3. *
  4. * Authors: listed in file AUTHORS in main folder
  5. *
  6. * License: GNU General Public License v2.0 or later
  7. * Full text of license available in license.txt file, in main folder
  8. *
  9. */
  10. #pragma once
  11. #include "NetworkDefines.h"
  12. VCMI_LIB_NAMESPACE_BEGIN
  13. class NetworkServer : public INetworkConnectionListener, public INetworkServer
  14. {
  15. std::shared_ptr<NetworkContext> io;
  16. std::shared_ptr<NetworkAcceptor> acceptor;
  17. std::set<std::shared_ptr<INetworkConnection>> connections;
  18. INetworkServerListener & listener;
  19. void connectionAccepted(std::shared_ptr<NetworkSocket>, const boost::system::error_code & ec);
  20. void startAsyncAccept();
  21. void onDisconnected(const std::shared_ptr<INetworkConnection> & connection) override;
  22. void onPacketReceived(const std::shared_ptr<INetworkConnection> & connection, const std::vector<uint8_t> & message) override;
  23. public:
  24. NetworkServer(INetworkServerListener & listener, const std::shared_ptr<NetworkContext> & context);
  25. void sendPacket(const std::shared_ptr<INetworkConnection> &, const std::vector<uint8_t> & message) override;
  26. void closeConnection(const std::shared_ptr<INetworkConnection> &) override;
  27. void start(uint16_t port) override;
  28. };
  29. VCMI_LIB_NAMESPACE_END