Olivia_v2017/Olivia/olv.h

138 lines
4.6 KiB
C++

#pragma once
/**
* @file olv.h
* Archivo de definiciones generales de la herramienta Olivia de OliviaTasks.
*/
/**
* Includes para archivo de definiciones OliviaDef.cs
*/
#ifdef OLIVIA_COMPILA
#define class namespace
#define public
#define static
#define string CString
#include "OliviaDef.cs"
#undef class
#undef public
#undef static
#undef string
#include "olv_tasks_def.h"
#include "_log.h"
#include "_app.h"
#include "olv_limp_def.h"
/**
* Tareas de ejecución para la ventana de progreso
*/
enum TareasProgr
{
OLV_TAREA_CALC, ///<Indica que está calculando el tiempo restante
OLV_TAREA_IMP, ///<Indica que está importando
OLV_TAREA_SENS, ///<Indica que está leyendo de los sensores
OLV_TAREA_UNE_NW_AMB, ///<Indica que está uniendo la red navegable a los ámbitos
OLV_TAREA_TOPO_NW, ///<Indica que está generando topología
OLV_TAREA_COST_AMB, ///<Indica que está calculando los costes entre ámbitos
OLV_TAREA_GUARD_MAT, ///<Indica que está guardando las matrices
OLV_TAREA_MULTITASK, ///<Indica que está en proceso multitask
OLV_TAREA_CALC_SEC, ///<Indica que está calculando el número de sectores
OLV_TAREA_PERMU, ///<Indica que está calculando permutaciones
OLV_TAREA_SECTORIZ, ///<Indica que está sectorizando
OLV_TAREA_PLANIF, ///<Indica que está planificando
OLV_TAREA_LEE_SECTO, ///<Indica que está leyendo sectorización
OLV_TAREA_FIN_SEC, ///<Indica que ha finalizado la sectorización
OLV_TAREA_FIN_PLANIF, ///<Indica que ha finalizado la planificación
OLV_TAREA_FIN_OK, ///<Indica que ha finalizado bien
OLV_TAREA_FIN_NOK, ///<Indica que ha finalizado mal
OLV_TAREA_N ///<Número tareas
};
/**
* Tipos de ejecución de Olivia
*/
enum TiposEjecOlv
{
OLV_EJEC_NDEBUG,
OLV_EJEC_SECT,
OLV_EJEC_PLAN,
OLV_EJEC_DEBUG_SIGUE,
OLV_EJEC_TODO,
OLV_EJEC_DEBUG_SIGUE_NOPLAN,
OLV_EJEC_DEBUG_NOSIGUE,
};
/**
* Paths de la configuración
*/
typedef struct PathsOlv{
char path_temp[MAX_PATH]; ///<Path temporal de generación de archivos intermedios
char path_res_rut[MAX_PATH]; ///<Path del shp con el resultado de las rutas
char path_res_pt[MAX_PATH]; ///<Path del shp con el resultado de los puntos de control
char path_res_sec[MAX_PATH]; ///<Path del shp con el resultado de las entidades de los ámbitos de trabajo asociada la info de sector
char path_data[MAX_PATH]; ///<Path del shp con datos a planificar, ya filtrados e intersecados con las zonas y niveles
char path_nw[MAX_PATH]; ///<Path del shp con la red navegable
char path_cfg_geo[MAX_PATH];
char pfin; ///<Para marcar el final de la estructura
}PathsOlv;
class Colv_limp;
class Colv_reco;
class Colv_shp;
class Colv_sock;
class Clock;
class Msmain;
/**
* Clase general de la herramienta Olivia de OliviaTasks.
*/
class OLV_EXPORT COlivia : public C_app, public C_escucha_log
{
public:
//*************************************************************************************
//Variables
int tipo_oliv; ///<Tipo de ejecución de la herramienta
int tarea; ///<Índice de la tarea por la que va
int progreso; ///<Progreso, de 0 a 100
int modo_ejec;
BOOL ya_config;
BOOL fin; ///<Indica si ha finalizado la ejecución
BOOL modo_multitask;
char tareas_str[OLV_TAREA_N][OLV_MAX_TAREA];
char msg_proce[OLV_MAX_MSG_PROCE];///<Mensaje de error general
Msmain *mfrm; ///<Puntero al MainFrame
PathsOlv paths; ///<Estructura con los paths de trabajo
Clock *lock; ///<Interlock para gestión de memoria
Colv_limp *olv_limp; ///<Instancia para la utilidad de la limpieza viaria
Colv_reco *olv_reco; ///<Instancia para la utilidad de la recogida de residuos
Colv_sock *olv_sock; ///<Instancia para socket de comunicaciones con Olivia AddIn
InfoIniTask infotask;
bool isDebug;
//*************************************************************************************
//Funciones
COlivia(void);
~COlivia(void);
////////////////
void prueba();
BOOL coge_param(char *param);
BOOL inicia(char *cmdline, char *err, int nerr);
int dame_tarea();
int dame_progre();
BOOL pon_config(char *config);
void cancela();
BOOL dame_param(char *token, char *param, int sizeparam);
BOOL dame_param(char *token, int *param);
BOOL dame_param(char *token, double *param);
void destruye_socket(LPARAM lp);
void rellena_tareas();
void borra_log_old();
BOOL creaSocProces( Colv_limp *olv );
void crea_socket_multi( LPARAM lp );
BOOL destruyeSocProces( Colv_limp *olv );
void destruye_socket_multi( LPARAM lp );
void log_ext( __time64_t tiemp, char *modulo, char *fmt );
};
OLV_EXPORT void olvlog (int nivel, char * modulo, char *fmt, ...);
#endif