#pragma once

#include "Socket.h"
#include "SocketInterface.h"

#include <memory>
#include <vector>

class NetworkManager
{
public:

    NetworkManager();

    ~NetworkManager();

    static std::unique_ptr<NetworkManager> Create();

    void Initialize();

    void RunHttpServer();

    void RunHttpClient();

    void ShutDown();

private:
    std::vector<SocketPtr> mActiveSockets;
    ISocketInterfaceUPtr mSocketInterface;

};

using NetworkManagerUPtr = std::unique_ptr<NetworkManager>;
