#ifndef NETWORK_HPP
#define NETWORK_HPP

// Détection du système cible...
#include "usgeDetectSystem.h"

namespace USpeedGameEngine
{

class Network
{
    /* **************
    * Les attributs *
    * **************/
    public :
        class Server;       //!< La classe Serveur
        class Client;       //!< La classe Client

    protected :
    private :

    /* *************
    * Les méthodes *
    * *************/
    public :
        // Destructeur par défaut
        ~Network();
        // Initialise le réseau : obligatoire avant de lancer le serveur ou un client
        bool init();
        // Libère le réseau : permet de libérer des ressources une fois que l'on ne sollicite plus le réseau
        void unInit();
        // Retourne l'instance unique de la classe
        static Network *getInstance();
        // Lance l'écran 'officiel' PSP de sélection du profil Wifi et se connecte : pas d'incidence si appelé en Win32
        static bool getWifiAccessPoint();
        // Ferme la connexion Wifi de la PSP : pas d'incidence si appelé en Win32
        static void closeWifiAccessPoint();
        // Retourne l'état d'activité de la fonction Wifi.
        static bool getWifiPowerState();
        // Interprétation de l'URL fournie pour en extraire le nom du serveur, la ressource à récupérer et le port de connexion.
        static bool parseUrl(std::string const &url, std::string &server, std::string &resource, int &port);
        // Découpage du paquet HTTP pour obtenir l'entête et les données.
        static void splitHttpContent(std::string const& httpData, std::string &header, std::string &data);
        // Récupère la valeur d'un champ de l'entête d'un paquet HTTP.
        static void getHttpField(std::string const& httpHeader, std::string const &field, std::string &value);
    protected :
    private :
        // Constructeur par défaut
        Network();
};

}        // Fin "namespace USpeedGameEngine"

#endif
