<commit_before>#pragma once
#include "pt_data.h"
#include <boost/serialization/version.hpp>
#include <boost/thread/shared_mutex.hpp>
#include "street_network/types.h"
#include "utils/logger.h"
#include "utils/configuration.h"
#include "boost/utility.hpp"
#include "meta_data.h"
#include <boost/format.hpp>
#include "routing/dataraptor.h"

namespace navitia { namespace type {

/** Contient toutes les données théoriques du référentiel transport en communs
  *
  * Il existe trois formats de stockage : texte, binaire, binaire compressé
  * Il est conseillé de toujours utiliser le format compressé (la compression a un surcoût quasiment nul et
  * peut même (sur des disques lents) accélerer le chargement).
  */
class Data : boost::noncopyable{
public:

    static const unsigned int data_version = 3; //< Numéro de la version. À incrémenter à chaque que l'on modifie les données sérialisées
    int nb_threads; //< Nombre de threads. IMPORTANT ! Sans cette variable, ça ne compile pas
    unsigned int version; //< Numéro de version des données chargées
    bool loaded; //< Est-ce que lse données ont été chargées

    MetaData meta;

    /** Le map qui contient la liste des Alias utilisé par
          * 1. module de binarisation des données ou le module de chargement.
            2. Module firstletter à chaque appel.
          */
    std::map<std::string, std::string> Alias_List;

    // Référentiels de données

    /// Référentiel de transport en commun
    PT_Data pt_data;

    /// streetnetwork
    navitia::streetnetwork::StreetNetwork street_network;

    /// Données précalculées pour le raptor
    routing::raptor::dataRAPTOR dataRaptor;

    /// Fixe les villes des voiries du filaire
    void set_cities();

    /// Mutex servant à protéger le load des données
    boost::shared_mutex load_mutex;

    friend class boost::serialization::access;
    
    bool last_load;
    boost::posix_time::ptime last_load_at;

    public:

    /// Constructeur de data, définit le nombre de threads, charge les données
    Data() : nb_threads(8), loaded(false), last_load(true){
        if(Configuration::is_instanciated()){
            init_logger();
            log4cplus::Logger logger = log4cplus::Logger::getInstance(LOG4CPLUS_TEXT("logger"));
            LOG4CPLUS_TRACE(logger, "Chargement de l'application");
            Configuration * conf = Configuration::get();
            nb_threads = conf->get_as<int>("GENERAL", "nb_threads", 1);
            std::string conf_file = conf->get_string("path") + conf->get_string("application") + ".ini";
            LOG4CPLUS_TRACE(logger, "On tente de charger le fichier de configuration pour les logs : " + conf_file);
            init_logger(conf_file);
            LOG4CPLUS_TRACE(logger, "On tente de charger le fichier de configuration général : " + conf_file);
            conf->load_ini(conf_file);
        }
    }

    /** Fonction qui permet de sérialiser (aka binariser la structure de données<commit_msg>Data : on lit le nombre de threads au bon endroit<commit_after>#pragma once
#include "pt_data.h"
#include <boost/serialization/version.hpp>
#include <boost/thread/shared_mutex.hpp>
#include "street_network/types.h"
#include "utils/logger.h"
#include "utils/configuration.h"
#include "boost/utility.hpp"
#include "meta_data.h"
#include <boost/format.hpp>
#include "routing/dataraptor.h"

namespace navitia { namespace type {

/** Contient toutes les données théoriques du référentiel transport en communs
  *
  * Il existe trois formats de stockage : texte, binaire, binaire compressé
  * Il est conseillé de toujours utiliser le format compressé (la compression a un surcoût quasiment nul et
  * peut même (sur des disques lents) accélerer le chargement).
  */
class Data : boost::noncopyable{
public:

    static const unsigned int data_version = 3; //< Numéro de la version. À incrémenter à chaque que l'on modifie les données sérialisées
    int nb_threads; //< Nombre de threads. IMPORTANT ! Sans cette variable, ça ne compile pas
    unsigned int version; //< Numéro de version des données chargées
    bool loaded; //< Est-ce que lse données ont été chargées

    MetaData meta;

    /** Le map qui contient la liste des Alias utilisé par
          * 1. module de binarisation des données ou le module de chargement.
            2. Module firstletter à chaque appel.
          */
    std::map<std::string, std::string> Alias_List;

    // Référentiels de données

    /// Référentiel de transport en commun
    PT_Data pt_data;

    /// streetnetwork
    navitia::streetnetwork::StreetNetwork street_network;

    /// Données précalculées pour le raptor
    routing::raptor::dataRAPTOR dataRaptor;

    /// Fixe les villes des voiries du filaire
    void set_cities();

    /// Mutex servant à protéger le load des données
    boost::shared_mutex load_mutex;

    friend class boost::serialization::access;
    
    bool last_load;
    boost::posix_time::ptime last_load_at;

    public:

    /// Constructeur de data, définit le nombre de threads, charge les données
    Data() : nb_threads(8), loaded(false), last_load(true){
        if(Configuration::is_instanciated()){
            init_logger();
            log4cplus::Logger logger = log4cplus::Logger::getInstance(LOG4CPLUS_TEXT("logger"));
            LOG4CPLUS_TRACE(logger, "Chargement de l'application");
            Configuration * conf = Configuration::get();
            std::string conf_file = conf->get_string("path") + conf->get_string("application") + ".ini";
            LOG4CPLUS_TRACE(logger, "On tente de charger le fichier de configuration pour les logs : " + conf_file);
            init_logger(conf_file);
            LOG4CPLUS_TRACE(logger, "On tente de charger le fichier de configuration général : " + conf_file);
            conf->load_ini(conf_file);
            nb_threads = conf->get_as<int>("GENERAL", "nb_threads", 1);
        }
    }

    /** Fonction qui permet de sérialiser (aka binariser la structure de données
{'fraction_non_alphanumeric': 0.0965528781793842, 'fraction_numerical': 0.003681392235609103, 'mean_word_length': 3.303095752339813, 'pattern_counts': {'":': 0, '<': 21, '<?xml version=': 0, '>': 21, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3697540', 'n_tokens_mistral': 1842, 'n_tokens_neox': 1843, 'n_words': 566}