171 lines
3.5 KiB
C++
171 lines
3.5 KiB
C++
// OliviaTasks.cpp : Defines the entry point for the console application.
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
#include "OliviaTasks.h"
|
|
#include "olv_task.h"
|
|
#include "OlvTaskProcess.h"
|
|
#include "utl.h"
|
|
#include "olv_dll.h"
|
|
#include "olv.h"
|
|
#include "_log.h"
|
|
#include "Msmain.h"
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#endif
|
|
#include "GeometryFunction.h"
|
|
#include "StrArray.h"
|
|
#include "ClienteLicencias.h"
|
|
#include "_app.h"
|
|
|
|
// The one and only application object
|
|
|
|
//! Clase principal de OliviaTasks
|
|
/*!
|
|
* Es la interface entre el AddIn de Olivia y el core de calculos Olivia.dll
|
|
*
|
|
*/
|
|
|
|
CWinApp theApp;
|
|
|
|
using namespace std;
|
|
|
|
BOOL coge_param(char *cmdline, OlvTaskProcess *task);
|
|
|
|
//! Funcion principal
|
|
/**
|
|
* Funcion principal que inicia la aplicacion al ser llamada por el AddIn
|
|
*/
|
|
int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
|
|
{
|
|
|
|
int nRetCode = 0;
|
|
|
|
if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
|
|
{
|
|
_tprintf(_T("Fatal Error: MFC initialization failed\n"));
|
|
nRetCode = 1;
|
|
}
|
|
else
|
|
{
|
|
OlvApp.olv = new COlivia();
|
|
Msmain mp;
|
|
OlvApp.olv->mfrm = ∓
|
|
mp.olv = OlvApp.olv;
|
|
|
|
//inicia log-------------------------------------------------
|
|
C_app* app = C_app::GetApp();
|
|
app->archi.rellena_dirs_ejecucion();
|
|
#ifdef _DEBUG
|
|
|
|
HWND Stealth;
|
|
AllocConsole();
|
|
|
|
Stealth = FindWindowA("ConsoleWindowClass", NULL);
|
|
ShowWindow(Stealth,SW_SHOWNORMAL);
|
|
|
|
#endif
|
|
//pilla path temporal
|
|
StrArray buf;
|
|
strcpy(app->log.nombre,"Olivia");
|
|
int nn = Cutl::stringSplit(lpCmdLine,"/path_temp:", &buf)->n_i;
|
|
if(nn>=2 && Cutl::stringSplit(buf.get(1)," /", &buf)->n_i>nn)
|
|
strcpy(app->log.path,buf.get(nn));
|
|
buf.borra();
|
|
|
|
//verifica versión-----------------------------------
|
|
ClienteLicencias lic;
|
|
char strtem[MAX_PATH];
|
|
app->archi.rellena_dirs_ejecucion();
|
|
strcpy_s(strtem,MAX_PATH,app->archi.path_ejecutable);
|
|
Cdir_manager::dir_anterior(strtem);
|
|
sprintf(lic.dirLic,"%s\\", strtem);
|
|
sprintf(lic.dirTemp,"%s\\", app->log.path);
|
|
if(!lic.cargaLicencia())
|
|
{
|
|
C_log::log("_tmain", "Error al comprobar versión");
|
|
#ifdef _DEBUG
|
|
system("pause");
|
|
#endif;
|
|
}
|
|
|
|
#ifdef _DEBUG
|
|
system("pause");
|
|
#endif;
|
|
C_log::log("_tmain","Inicio OliviaTask: %s", lpCmdLine);
|
|
mp.Despacha_log();
|
|
//verifica modo debug----------------------------------------
|
|
if(strstr(lpCmdLine,"debug"))
|
|
{
|
|
OlvApp.olv->modo_ejec=OLV_EJEC_DEBUG_SIGUE;
|
|
}
|
|
|
|
|
|
char err[1024];
|
|
if(!OlvApp.olv->inicia(lpCmdLine, err,1024))
|
|
{
|
|
C_log::log("_tmain",err);
|
|
}
|
|
else
|
|
{
|
|
if(OlvApp.olv->isDebug)
|
|
{
|
|
#ifdef _DEBUG
|
|
system("pause");
|
|
#endif;
|
|
OlvApp.olv->prueba();
|
|
}
|
|
mp.Despacha();
|
|
}
|
|
C_log::log("_tmain","Final feliz!!");
|
|
mp.Despacha_log();
|
|
OlvApp.olv->mfrm =NULL;
|
|
|
|
#ifdef _DEBUG
|
|
system("pause");
|
|
#endif
|
|
}
|
|
|
|
return nRetCode;
|
|
}
|
|
//*************************************************************************************
|
|
/**
|
|
* Dada la línea de comandos, la divide en los parámetros necesarios
|
|
* (Funcion para modo multitask)
|
|
*/
|
|
BOOL coge_param(char *cmdline, OlvTaskProcess *task)
|
|
{
|
|
char *token;
|
|
int j;
|
|
|
|
//los parámetros son:
|
|
//\olivia \tipo_oliv \cfg.ini \ip \puerto \toutsock
|
|
token = strtok(cmdline, TASKS_PARAM_SEP);
|
|
|
|
//Lee parámetros
|
|
j=0;
|
|
while (token != NULL)
|
|
{
|
|
if(j==0)
|
|
{
|
|
//ip
|
|
strcpy_s(OlvApp.ip,64,token);
|
|
}
|
|
else if(j==1)
|
|
{
|
|
//puerto
|
|
OlvApp.port=atoi(token);
|
|
}
|
|
else if(j==2)
|
|
{
|
|
//ithr
|
|
task->ithr = atoi(token);
|
|
}
|
|
token = strtok(NULL, TASKS_PARAM_SEP);
|
|
j++;
|
|
}
|
|
if(j<3)
|
|
return FALSE; //no ha leído los param suficientes
|
|
return TRUE;
|
|
}
|