#pragma once #include "TaskProcess.h" #include "mapmatrix.h" #include "DijkstraUtiles.h" #include "b_file.h" #include "olv_tasks_def.h" #include "Matrix2d.h" class InfoIndiceEx: public InfoIndice { public: Cgarray dat; int getFlags(int na) { return dat[na*3+2]; } virtual int get(int iamb, int iextremo) { return dat[iamb*3+iextremo]; } inline void clear() { dat.borra(); } BOOL leeFile(char* path); }; struct InfoIniTask; /*! * Clase para cálculos de Olivia en modo Multitask * */ class OlvTaskProcess : public TaskProcess { public: //info de procesos bool va_mal; int ithr;//id del thread, lo recibe al arrancar como arg int amb_ini;//ambito inicio, lo calcula int amb_fin;//ambito fin, lo calcula ///////////////////////// //variables para run Cdijkstra_arch arch_dj; InfoIndiceEx ia;//puntero a info asoc CmapMatFloat costes;//matriz de costes entre nodos Djkt_ang_ady *angs;//angulos entre nodos Matrix2d cost_amb;//matriz de costes entre ambitos ///////////////////////// //recibe por socket InfoIniTask info; ////////////////////////// OlvTaskProcess(void); ~OlvTaskProcess(void); virtual void preTask(); virtual void inTask(); virtual void postTask(); virtual void run(); virtual void desconecta(); ///////////////////////// //funciones run BOOL calcula_cost_amb_sub(int amb_ini,int amb_fin, int ith); BOOL lee_mats(); BOOL guarda_cost_amb(); void enviaLog(); BOOL calcula_cost_ambThr(); BOOL lanza_thr_calc(); }; class ThCalcCostes: public Cth { public: OlvTaskProcess *pclas; int ithr; int ini;//fila inicio int fin;//fila fin BOOL mal;//indica si ha ido bien virtual void run(); };