En parametre un pointeur sur une classe CDialog.
Ca fonctionne sans probleme sur NT , 2000 & co
Par contre sous 98 , les ressources systeme s'epuisent rapidement.
Si quelqu'un à une idee.
Merci d'avance
UINT Thread_Pipe(LPVOID pParam )
{
CTelintransComDiagMessage *Maf;
Maf =(CTelintransComDiagMessage *)pParam;
CStatic * cStatic = (CStatic *)Maf->GetDlgItem(IDC_SMESSAGE);
CProgressCtrl *CBar =(CProgressCtrl *)Maf->GetDlgItem(IDC_PMESSAGE);
//CTelintransComDiagMessage Fen;
int NbFic =0;
char NomFicTmp[500];
char NomFicTmp1[20];
char Sect[100];
char *TFE;
char *TFET;
char *InfoT;
char *c1;
char *c2;
int i=0;
DWORD RetCode;
static HANDLE Hpipe;
static OVERLAPPED StructOver;
static HANDLE HandleStructOver;
static OVERLAPPED StructOver1;
static HANDLE HandleStructOver1;
DWORD TailleEcriture=0;
DWORD TailleLecture=0;
char *Transmet;
int Info;
char *tmp =new char[100];
char *Buf =new char[100];
BOOL AFF = TRUE;
int NumTmp =Maf->NumTmp;
int Numero = 0;
int Ecriture = 1;
char * TransOld = new char[1000];
strcpy(TransOld,"");
/*
//////////////////
CTelintransComDiagMessage FenMess;
CTelinTransComFrameMessage *FrameMess;
CWinThread *MultiProcess;VOID * Arg;
//////////////////////////////
*/
DWORD toto;
BOOL MafExist=TRUE;
int res =0;
BOOL CONTINUE =TRUE;
BOOL ANNULATION = FALSE;
int Type=Maf->Type;
int Taille;
BOOL ATTANN = TRUE;
int Ppurge=0;
Taille = strlen(Queue[NumTmp]->CSIdApplication);
Transmet =new char[1000];
HANDLE Serv = CreateMutex(NULL,FALSE,"MESSAGESERVICEMUTEX");
DWORD ErrMutex = GetLastError();
CBar->SetRange32(0,100);
if(osVerInfo.dwPlatformId==VER_PLATFORM_WIN32_WINDOWS)
{
CBar->SetStep(10);
MESSPIPELECTURE = MessagePipe->MESSLECTURE;
CBar->StepIt( );
MESSPIPEECRITURE = MessagePipe->MESSECRITURE;
CBar->StepIt( );
MESSINIT = MessagePipe->MESSINIT;
CBar->StepIt( );
MESSDEL = MessagePipe->MESSDEL;
CBar->StepIt( );
MESSANN = MessagePipe->MESSANN;
CBar->StepIt( );
MESSANN1 = MessagePipe->MESSANN1;
CBar->StepIt( );
Numero = atoi(MessagePipe->Numero);
if(MESSPIPEECRITURE==0||MESSPIPELECTURE==0||MESSINIT==0||MESSANN==0||MESSANN1==0)
{
CBar->SetPos(100);
cStatic->SetWindowText("Service TelintransCom Non Lance!!!ARRET");
Sleep(1000);
Maf->OK = MisAJourLog(Queue[NumTmp]->CSStatus,"VALEUR","DEMANDE_ANNULE_PAR_PIPE",Maf->Log);
Maf->EndModalLoop(Maf->IdModal);
Maf->OK =0;
LanceNotification(BROKEN_PIPE,Queue[NumTmp]->NumOrdre,NumTmp,Queue[NumTmp]->CSIdApplication,Taille);
EcrireStatusEssai(Queue[NumTmp]->NumDemande,Queue[NumTmp]->CSIdApplication,StatusEssai,BROKEN_PIPE);
MisAJourLog(Queue[NumTmp]->CSStatus,"STATUSTRAITEMENT","TERMINE",Queue[NumTmp]->CSLog);
delete []TransOld;TransOld=NULL;
delete []tmp;tmp=NULL;
delete []Buf;Buf=NULL;
delete []Transmet;Transmet=NULL;
AfxEndThread(0,TRUE);
}
CBar->StepIt( );
WaitForSingleObject(Serv,INFINITE);
cStatic->SetWindowText("Connecté au pipe");
strcpy(Buf,Queue[NumTmp]->NomApp);
strcat(Buf,itoa(NumTmp,tmp,10));
strcpy(MessagePipe->NomPartage,Buf);
ReleaseMutex(Serv);
CBar->StepIt( );
PostMessage(HWND_BROADCAST,MESSINIT,0,0);
CBar->StepIt( );
WaitForSingleObject(Serv,INFINITE);
CBar->StepIt( );
envoiI[NumTmp]= new _EnvoiInf;
envoiI[NumTmp]->m_SharedData.Acquire(Buf,0);
envoiI[NumTmp]->NumEnvoi = NumTmp;
strcpy(envoiI[NumTmp]->m_SharedData->CSCheminFichierIni,Queue[NumTmp]->CSCheminFichierIni);
strcpy(envoiI[NumTmp]->m_SharedData->CSFichier,Queue[NumTmp]->CSFichier);
strcpy(envoiI[NumTmp]->m_SharedData->CSIdApplication,Queue[NumTmp]->CSIdApplication);
strcpy(envoiI[NumTmp]->m_SharedData->CSParametre,Queue[NumTmp]->CSParametre);
strcpy(envoiI[NumTmp]->m_SharedData->CSRepDest,Queue[NumTmp]->CSRepDest);
strcpy(envoiI[NumTmp]->m_SharedData->CSRepZip,Queue[NumTmp]->CSRepZip);
strcpy(envoiI[NumTmp]->m_SharedData->NumeroDemande,itoa(Queue[NumTmp]->NumDemande,tmp,10));
strcpy(envoiI[NumTmp]->m_SharedData->NumOrdre,itoa(Queue[NumTmp]->NumOrdre,tmp,10));
strcpy(envoiI[NumTmp]->m_SharedData->Suite,itoa(Queue[NumTmp]->Suite,tmp,10));
strcpy(envoiI[NumTmp]->m_SharedData->NomApp,Queue[NumTmp]->NomApp);
strcpy(envoiI[NumTmp]->m_SharedData->VerApp,Queue[NumTmp]->VerApp);
ReleaseMutex(Serv);
CBar->StepIt( );
WaitForSingleObject(Maf->AttenteAnn,INFINITE);
if(Maf->Ann ==TRUE)
{
ANNULATION = TRUE;
ATTANN=FALSE;
PostMessage(HWND_BROADCAST,MESSANN,Numero,0);
}
else
PostMessage(HWND_BROADCAST,MESSPIPELECTURE,Numero,0);
CBar->StepIt( );
}
else
{
CBar->SetStep(5);
Hpipe=CreateFile(PIPENAME,GENERIC_WRITE | GENERIC_READ,FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,OPEN_EXISTING,FILE_FLAG_OVERLAPPED,NULL);
if ((DWORD)Hpipe==0xFFFFFFFF)
RetCode = GetLastError();
if((RetCode== ERROR_SEEK_ON_DEVICE)||(RetCode== ERROR_FILE_NOT_FOUND))
{
CBar->SetPos(100);
cStatic->SetWindowText("Service TelintransCom Non Lance!!!ARRET");
Sleep(1000);
Maf->OK = MisAJourLog(Queue[NumTmp]->CSStatus,"VALEUR","DEMANDE_ANNULE_PAR_PIPE",Maf->Log);
Maf->EndModalLoop(Maf->IdModal);
Maf->OK =0;
LanceNotification(BROKEN_PIPE,Queue[NumTmp]->NumOrdre,NumTmp,Queue[NumTmp]->CSIdApplication,Taille);
EcrireStatusEssai(Queue[NumTmp]->NumDemande,Queue[NumTmp]->CSIdApplication,StatusEssai,BROKEN_PIPE);
MisAJourLog(Queue[NumTmp]->CSStatus,"STATUSTRAITEMENT","TERMINE",Queue[NumTmp]->CSLog);
delete []TransOld;TransOld=NULL;
delete []tmp;tmp=NULL;
delete []Buf;Buf=NULL;
delete []Transmet;Transmet=NULL;
if(Hpipe)CloseHandle(Hpipe);Hpipe=NULL;
AfxEndThread(0,TRUE);
}
cStatic->SetWindowText("Connecté au pipe");
Info = NUMDEMANDE;
RetCode =EnvoiInfoNum(Info,Hpipe,StructOver,HandleStructOver,TailleEcriture,TailleLecture);
if(RetCode==ERROR_BROKEN_PIPE)
{
goto NOK;
}
Trans =RetourText(Hpipe,StructOver,HandleStructOver,TailleEcriture,TailleLecture);
if(atoi(Trans)==ERROR_BROKEN_PIPE) goto NOK;
cStatic->SetWindowText(Trans);
CBar->StepIt( );
itoa(Queue[Maf->NumTmp]->NumDemande,(char *)Transmet,10);
RetCode =EnvoiInfoText(Transmet,Hpipe,StructOver,HandleStructOver,TailleEcriture,TailleLecture);
if(RetCode==ERROR_BROKEN_PIPE)
{
goto NOK;
}
Trans =RetourText(Hpipe,StructOver,HandleStructOver,TailleEcriture,TailleLecture);
if(atoi(Trans)==ERROR_BROKEN_PIPE) goto NOK;
cStatic->SetWindowText(Trans);
Info = ZIP;
RetCode =EnvoiInfoNum(Info,Hpipe,StructOver,HandleStructOver,TailleEcriture,TailleLecture);
if(RetCode==ERROR_BROKEN_PIPE)
{
goto NOK;
}
Trans =RetourText(Hpipe,StructOver,HandleStructOver,TailleEcriture,TailleLecture);
if(atoi(Trans)==ERROR_BROKEN_PIPE) goto NOK;
cStatic->SetWindowText(Trans);
CBar->StepIt( );
strcpy((char *)Transmet,Queue[Maf->NumTmp]->CSRepZip);
RetCode =EnvoiInfoText(Transmet,Hpipe,StructOver,HandleStructOver,TailleEcriture,TailleLecture);
if(RetCode==ERROR_BROKEN_PIPE)
{
goto NOK;
}
Trans =RetourText(Hpipe,StructOver,HandleStructOver,TailleEcriture,TailleLecture);
if(atoi(Trans)==ERROR_BROKEN_PIPE) goto NOK;
cStatic->SetWindowText(Trans);
CBar->StepIt( );
Info =NOMAPP;
RetCode =EnvoiInfoNum(Info,Hpipe,StructOver,HandleStructOver,TailleEcriture,TailleLecture);
if(RetCode==ERROR_BROKEN_PIPE)
{
goto NOK;
}
Trans =RetourText(Hpipe,StructOver,HandleStructOver,TailleEcriture,TailleLecture);
if(atoi(Trans)==ERROR_BROKEN_PIPE) goto NOK;
cStatic->SetWindowText(Trans);
CBar->StepIt( );
strcpy((char *)Transmet,Queue[Maf->NumTmp]->NomApp);
RetCode =EnvoiInfoText(Transmet,Hpipe,StructOver,HandleStructOver,TailleEcriture,TailleLecture);
if(RetCode==ERROR_BROKEN_PIPE)
{
goto NOK;
}
Trans =RetourText(Hpipe,StructOver,HandleStructOver,TailleEcriture,TailleLecture);
if(atoi(Trans)==ERROR_BROKEN_PIPE) goto NOK;
cStatic->SetWindowText(Trans);
CBar->StepIt( );
Info =VERAPP;
RetCode =EnvoiInfoNum(Info,Hpipe,StructOver,HandleStructOver,TailleEcriture,TailleLecture);
if(RetCode==ERROR_BROKEN_PIPE)
{
goto NOK;
}
Trans =RetourText(Hpipe,StructOver,HandleStructOver,TailleEcriture,TailleLecture);
if(atoi(Trans)==ERROR_BROKEN_PIPE) goto NOK;
cStatic->SetWindowText(Trans);
CBar->StepIt( );
strcpy((char *)Transmet,Queue[Maf->NumTmp]->VerApp);
RetCode =EnvoiInfoText(Transmet,Hpipe,StructOver,HandleStructOver,TailleEcriture,TailleLecture);
if(RetCode==ERROR_BROKEN_PIPE)
{
goto NOK;
}
Trans =RetourText(Hpipe,StructOver,HandleStructOver,TailleEcriture,TailleLecture);
if(atoi(Trans)==ERROR_BROKEN_PIPE) goto NOK;
cStatic->SetWindowText(Trans);
CBar->StepIt( );
Info = PARAM;
RetCode =EnvoiInfoNum(Info,Hpipe,StructOver,HandleStructOver,TailleEcriture,TailleLecture);
if(RetCode==ERROR_BROKEN_PIPE)
{
goto NOK;
}
Trans =RetourText(Hpipe,StructOver,HandleStructOver,TailleEcriture,TailleLecture);
if(atoi(Trans)==ERROR_BROKEN_PIPE) goto NOK;
cStatic->SetWindowText(Trans);
CBar->StepIt( );
strcpy((char *)Transmet,Queue[Maf->NumTmp]->CSParametre);
RetCode =EnvoiInfoText(Transmet,Hpipe,StructOver,HandleStructOver,TailleEcriture,TailleLecture);
if(RetCode==ERROR_BROKEN_PIPE)
{
goto NOK;
}
Trans =RetourText(Hpipe,StructOver,HandleStructOver,TailleEcriture,TailleLecture);
if(atoi(Trans)==ERROR_BROKEN_PIPE) goto NOK;
cStatic->SetWindowText(Trans);
CBar->StepIt( );
Info = SUITE;
RetCode =EnvoiInfoNum(Info,Hpipe,StructOver,HandleStructOver,TailleEcriture,TailleLecture);
if(RetCode==ERROR_BROKEN_PIPE)
{
goto NOK;
}
Trans =RetourText(Hpipe,StructOver,HandleStructOver,TailleEcriture,TailleLecture);
if(atoi(Trans)==ERROR_BROKEN_PIPE) goto NOK;
cStatic->SetWindowText(Trans);
CBar->StepIt( );
itoa(Queue[Maf->NumTmp]->Suite,(char *)Transmet,10);
RetCode =EnvoiInfoText(Transmet,Hpipe,StructOver,HandleStructOver,TailleEcriture,TailleLecture);
if(RetCode==ERROR_BROKEN_PIPE)
{
goto NOK;
}
Trans =RetourText(Hpipe,StructOver,HandleStructOver,TailleEcriture,TailleLecture);
if(atoi(Trans)==ERROR_BROKEN_PIPE) goto NOK;
cStatic->SetWindowText(Trans);
CBar->StepIt( );
Info = INI;
RetCode =EnvoiInfoNum(Info,Hpipe,StructOver,HandleStructOver,TailleEcriture,TailleLecture);
if(RetCode==ERROR_BROKEN_PIPE)
{
goto NOK;
}
Trans =RetourText(Hpipe,StructOver,HandleStructOver,TailleEcriture,TailleLecture);
if(atoi(Trans)==ERROR_BROKEN_PIPE) goto NOK;
cStatic->SetWindowText(Trans);
CBar->StepIt( );
strcpy((char *)Transmet,Queue[Maf->NumTmp]->CSCheminFichierIni);
RetCode =EnvoiInfoText(Transmet,Hpipe,StructOver,HandleStructOver,TailleEcriture,TailleLecture);
if(RetCode==ERROR_BROKEN_PIPE)
{
goto NOK;
}
Trans =RetourText(Hpipe,StructOver,HandleStructOver,TailleEcriture,TailleLecture);
if(atoi(Trans)==ERROR_BROKEN_PIPE) goto NOK;
cStatic->SetWindowText(Trans);
CBar->StepIt( );
Info = NUM;
RetCode =EnvoiInfoNum(Info,Hpipe,StructOver,HandleStructOver,TailleEcriture,TailleLecture);
if(RetCode==ERROR_BROKEN_PIPE)
{
goto NOK;
}
Trans =RetourText(Hpipe,StructOver,HandleStructOver,TailleEcriture,TailleLecture);
if(atoi(Trans)==ERROR_BROKEN_PIPE) goto NOK;
cStatic->SetWindowText(Trans);
CBar->StepIt( );
itoa(Queue[Maf->NumTmp]->NumOrdre,(char *)Transmet,10);
RetCode =EnvoiInfoText(Transmet,Hpipe,StructOver,HandleStructOver,TailleEcriture,TailleLecture);
if(RetCode==ERROR_BROKEN_PIPE)
{
goto NOK;
}
Trans =RetourText(Hpipe,StructOver,HandleStructOver,TailleEcriture,TailleLecture);
if(atoi(Trans)==ERROR_BROKEN_PIPE) goto NOK;
cStatic->SetWindowText(Trans);
CBar->StepIt( );
Info = IDTRANSACTION;
RetCode =EnvoiInfoNum(Info,Hpipe,StructOver,HandleStructOver,TailleEcriture,TailleLecture);
if(RetCode==ERROR_BROKEN_PIPE)
{
goto NOK;
}
Trans =RetourText(Hpipe,StructOver,HandleStructOver,TailleEcriture,TailleLecture);
if(atoi(Trans)==ERROR_BROKEN_PIPE) goto NOK;
cStatic->SetWindowText(Trans);
CBar->StepIt( );
strcpy((char *)Transmet,Queue[Maf->NumTmp]->CSIdApplication);
RetCode =EnvoiInfoText(Transmet,Hpipe,StructOver,HandleStructOver,TailleEcriture,TailleLecture);
if(RetCode==ERROR_BROKEN_PIPE)
{
goto NOK;
}
Trans =RetourText(Hpipe,StructOver,HandleStructOver,TailleEcriture,TailleLecture);
if(atoi(Trans)==ERROR_BROKEN_PIPE) goto NOK;
cStatic->SetWindowText(Trans);
CBar->StepIt( );
Info = FICHIER;
RetCode =EnvoiInfoNum(Info,Hpipe,StructOver,HandleStructOver,TailleEcriture,TailleLecture);
if(RetCode==ERROR_BROKEN_PIPE)
{
goto NOK;
}
Trans =RetourText(Hpipe,StructOver,HandleStructOver,TailleEcriture,TailleLecture);
if(atoi(Trans)==ERROR_BROKEN_PIPE) goto NOK;
cStatic->SetWindowText(Trans);
strcpy((char *)Transmet,Queue[Maf->NumTmp]->CSFichier);
RetCode =EnvoiInfoText(Transmet,Hpipe,StructOver,HandleStructOver,TailleEcriture,TailleLecture);
if(RetCode==ERROR_BROKEN_PIPE)
{
goto NOK;
}
Trans =RetourText(Hpipe,StructOver,HandleStructOver,TailleEcriture,TailleLecture);
if(atoi(Trans)==ERROR_BROKEN_PIPE) goto NOK;
cStatic->SetWindowText(Trans);
CBar->StepIt( );
Info = REPDEST;
RetCode =EnvoiInfoNum(Info,Hpipe,StructOver,HandleStructOver,TailleEcriture,TailleLecture);
if(RetCode==ERROR_BROKEN_PIPE)
{
goto NOK;
}
Trans =RetourText(Hpipe,StructOver,HandleStructOver,TailleEcriture,TailleLecture);
if(atoi(Trans)==ERROR_BROKEN_PIPE) goto NOK;
cStatic->SetWindowText(Trans);
strcpy((char *)Transmet,Queue[Maf->NumTmp]->CSRepDest);
RetCode =EnvoiInfoText(Transmet,Hpipe,StructOver,HandleStructOver,TailleEcriture,TailleLecture);
if(RetCode==ERROR_BROKEN_PIPE)
{
goto NOK;
}
Trans =RetourText(Hpipe,StructOver,HandleStructOver,TailleEcriture,TailleLecture);
if(atoi(Trans)==ERROR_BROKEN_PIPE) goto NOK;
cStatic->SetWindowText(Trans);
CBar->StepIt( );
WaitForSingleObject(Maf->AttenteAnn,INFINITE);
if(Maf->Ann ==TRUE)
{
ANNULATION = TRUE;
Info = ANNUL;
RetCode =EnvoiInfoNum(Info,Hpipe,StructOver,HandleStructOver,TailleEcriture,TailleLecture);
if(RetCode==ERROR_BROKEN_PIPE)
{
goto NOK;
}
Trans =RetourText(Hpipe,StructOver,HandleStructOver,TailleEcriture,TailleLecture);
if(atoi(Trans)==ERROR_BROKEN_PIPE) goto NOK;
cStatic->SetWindowText(Trans);
ATTANN=FALSE;
CBar->StepIt( );
}
else
{
Info = LANCEPROG;
RetCode =EnvoiInfoNum(Info,Hpipe,StructOver,HandleStructOver,TailleEcriture,TailleLecture);
if(RetCode==ERROR_BROKEN_PIPE)
{
goto NOK;
}
Trans =RetourText(Hpipe,StructOver,HandleStructOver,TailleEcriture,TailleLecture);
if(atoi(Trans)==ERROR_BROKEN_PIPE) goto NOK;
cStatic->SetWindowText(Trans);
MisAJourLog(Queue[Maf->NumTmp]->CSStatus,"VALEUR","TRANSMIS",Queue[Maf->NumTmp]->CSLog);
CBar->StepIt( );
}
}
//char *c,*c1,*c2;
//DWORD Pos;
CBar->SetPos(0);
while(CONTINUE==TRUE&&ANNULATION==FALSE)
{
if(osVerInfo.dwPlatformId==VER_PLATFORM_WIN32_WINDOWS)
{
PostMessage(HWND_BROADCAST,MESSPIPEECRITURE,Numero,0);
toto = GetLastError();
WaitForSingleObject(Serv,INFINITE);
strcpy(Trans,envoiI[NumTmp]->m_SharedData->PartageInfo);
res = atoi(Trans);
ReleaseMutex(Serv);
}
else
{
Info = INFOTRANSFERT;
RetCode =EnvoiInfoNum(Info,Hpipe,StructOver,HandleStructOver,TailleEcriture,TailleLecture);
if(RetCode==ERROR_BROKEN_PIPE)
{
goto NOK;
}
Trans =RetourText(Hpipe,StructOver,HandleStructOver,TailleEcriture,TailleLecture);
if(atoi(Trans)==ERROR_BROKEN_PIPE) goto NOK;
res = atoi(Trans);
}
if(strcmp(TransOld,Trans)==0)
Ecriture =0;
if(strstr(Trans,"9999")==NULL) strcpy(TransOld,Trans);
WaitForSingleObject(Maf->AttenteAnn,INFINITE);
if(Maf->Ann==TRUE)
{
ANNULATION = TRUE;
res = ANNUL1;
}
switch (res)
{
case ANNUL1:
if(Maf->Purge==TRUE)Ppurge = 0;else Ppurge =1;
while(ATTANN==TRUE)
{
if(osVerInfo.dwPlatformId==VER_PLATFORM_WIN32_WINDOWS)
{
PostMessage(HWND_BROADCAST,MESSANN1,Numero,Ppurge);
PostMessage(HWND_BROADCAST,MESSPIPEECRITURE,Numero,0);
DWORD toto = GetLastError();
WaitForSingleObject(Serv,INFINITE);
strcpy(Trans,envoiI[NumTmp]->m_SharedData->PartageInfo);
res = atoi(Trans);
ReleaseMutex(Serv);
if(res==FATAL_HEADER||res==SUCCESS_COMPLETED||res==ERROR_COMPLETED||res==FATAL_USER||res==FATAL_AUTH||res==FATAL_PRIV||res==FATAL_NOSERV||res==ERROR_NETWORK||res==FATAL_ERROR||res==SUCCESS_CANCEL)
{
ATTANN=FALSE;
}
cStatic->SetWindowText("Demande en cours d'annulation");
CBar->StepIt( );
Sleep(1000);
}
else
{
if(Ppurge==0)Info = ANNUL1;else Info = ANNULSP;
RetCode =EnvoiInfoNum(Info,Hpipe,StructOver,HandleStructOver,TailleEcriture,TailleLecture);
if(RetCode==ERROR_BROKEN_PIPE)
{
goto NOK;
}
Trans =RetourText(Hpipe,StructOver,HandleStructOver,TailleEcriture,TailleLecture);
if(atoi(Trans)==ERROR_BROKEN_PIPE) goto NOK;
res = atoi(Trans);
if(res==FATAL_HEADER||res==SUCCESS_COMPLETED||res==ERROR_COMPLETED||res==FATAL_USER||res==FATAL_AUTH||res==FATAL_PRIV||res==FATAL_NOSERV||res==ERROR_NETWORK||res==FATAL_ERROR||res==SUCCESS_CANCEL)
{
ATTANN=FALSE;
}
cStatic->SetWindowText("Demande en cours d'annulation");
CBar->StepIt( );
Sleep(1000);
}
}
break;
case FATAL_HEADER:
EcrireStatusEssai(NumTmp,Queue[NumTmp]->CSIdApplication,StatusEssai,FATAL_HEADER);
MisAJourLog(Queue[Maf->NumTmp]->CSStatus,"STATUSTRAITEMENT","TERMINE",Queue[NumTmp]->CSLog);
LanceNotification(FATAL_HEADER,Queue[NumTmp]->NumOrdre,Queue[NumTmp]->NumDemande,Queue[NumTmp]->CSIdApplication,Taille);
//Queue[NumTmp]->NumDemande =0;
CONTINUE = FALSE;
break;
case SUCCESS_FULL:
EcrireStatusEssai(NumTmp,Queue[NumTmp]->CSIdApplication,StatusEssai,SUCCESS_FULL);
strcpy(Sect,"STATUS-");
strcat(Sect,itoa(Queue[NumTmp]->NumDemande,NomFicTmp1,10));
MisAJourLog(Queue[Maf->NumTmp]->CSStatus,"STATUSTRAITEMENT","ENCOURS",Queue[NumTmp]->CSLog);
LanceNotification(SUCCESS_FULL,Queue[NumTmp]->NumOrdre,Queue[NumTmp]->NumDemande,Queue[NumTmp]->CSIdApplication,Taille);
break;
case SUCCESS_COMPLETED:
EcrireStatusEssai(NumTmp,Queue[NumTmp]->CSIdApplication,StatusEssai,SUCCESS_COMPLETED);
strcpy(Sect,"STATUS-");
strcat(Sect,itoa(Queue[NumTmp]->NumDemande,NomFicTmp1,10));
MisAJourLog(Queue[Maf->NumTmp]->CSStatus,"STATUSTRAITEMENT","TERMINE",Queue[NumTmp]->CSLog);
LanceNotification(SUCCESS_COMPLETED,Queue[NumTmp]->NumOrdre,Queue[NumTmp]->NumDemande,Queue[NumTmp]->CSIdApplication,Taille);
//Queue[NumTmp]->NumDemande =0;
CONTINUE=FALSE;
break;
case ERROR_COMPLETED:
EcrireStatusEssai(NumTmp,Queue[NumTmp]->CSIdApplication,StatusEssai,ERROR_COMPLETED);
strcpy(Sect,"STATUS-");
strcat(Sect,itoa(Queue[NumTmp]->NumDemande,NomFicTmp1,10));
MisAJourLog(Queue[Maf->NumTmp]->CSStatus,"STATUSTRAITEMENT","TERMINE",Queue[NumTmp]->CSLog);
LanceNotification(ERROR_COMPLETED,Queue[NumTmp]->NumOrdre,Queue[NumTmp]->NumDemande,Queue[NumTmp]->CSIdApplication,Taille);
//Queue[NumTmp]->NumDemande =0;
CONTINUE=FALSE;
break;
case SUCCESS_NEXT:
if(Ecriture==1) EcrireStatusEssai(NumTmp,Queue[NumTmp]->CSIdApplication,StatusEssai,SUCCESS_NEXT);
strcpy(Sect,"STATUS-");
strcat(Sect,itoa(Queue[NumTmp]->NumDemande,NomFicTmp1,10));
MisAJourLog(Queue[Maf->NumTmp]->CSStatus,"STATUSTRAITEMENT","ENCOURS",Queue[NumTmp]->CSLog);
LanceNotification(SUCCESS_NEXT,Queue[NumTmp]->NumOrdre,Queue[NumTmp]->NumDemande,Queue[NumTmp]->CSIdApplication,Taille);
break;
case SUCCESS_LATER:
if(Ecriture==1) EcrireStatusEssai(NumTmp,Queue[NumTmp]->CSIdApplication,StatusEssai,SUCCESS_LATER);
strcpy(Sect,"STATUS-");
strcat(Sect,itoa(Queue[NumTmp]->NumDemande,NomFicTmp1,10));
MisAJourLog(Queue[Maf->NumTmp]->CSStatus,"STATUSTRAITEMENT","ENCOURS",Queue[NumTmp]->CSLog);
LanceNotification(SUCCESS_LATER,Queue[NumTmp]->NumOrdre,Queue[NumTmp]->NumDemande,Queue[NumTmp]->CSIdApplication,Taille);
break;
case FATAL_USER:
EcrireStatusEssai(NumTmp,Queue[NumTmp]->CSIdApplication,StatusEssai,FATAL_USER);
strcpy(Sect,"STATUS-");
strcat(Sect,itoa(Queue[NumTmp]->NumDemande,NomFicTmp1,10));
MisAJourLog(Queue[Maf->NumTmp]->CSStatus,"STATUSTRAITEMENT","TERMINE",Queue[NumTmp]->CSLog);
LanceNotification(FATAL_USER,Queue[NumTmp]->NumOrdre,Queue[NumTmp]->NumDemande,Queue[NumTmp]->CSIdApplication,Taille);
//Queue[NumTmp]->NumDemande =0;
CONTINUE = FALSE;
break;
case FATAL_AUTH:
EcrireStatusEssai(NumTmp,Queue[NumTmp]->CSIdApplication,StatusEssai,FATAL_AUTH);
strcpy(Sect,"STATUS-");
strcat(Sect,itoa(Queue[NumTmp]->NumDemande,NomFicTmp1,10));
MisAJourLog(Queue[Maf->NumTmp]->CSStatus,"STATUSTRAITEMENT","TERMINE",Queue[NumTmp]->CSLog);
LanceNotification(FATAL_AUTH,Queue[NumTmp]->NumOrdre,Queue[NumTmp]->NumDemande,Queue[NumTmp]->CSIdApplication,Taille);
//Queue[NumTmp]->NumDemande =0;
CONTINUE = FALSE;
break;
case FATAL_PRIV:
EcrireStatusEssai(NumTmp,Queue[NumTmp]->CSIdApplication,StatusEssai,FATAL_PRIV);
strcpy(Sect,"STATUS-");
strcat(Sect,itoa(Queue[NumTmp]->NumDemande,NomFicTmp1,10));
MisAJourLog(Queue[Maf->NumTmp]->CSStatus,"STATUSTRAITEMENT","TERMINE",Queue[NumTmp]->CSLog);
LanceNotification(FATAL_PRIV,Queue[NumTmp]->NumOrdre,Queue[NumTmp]->NumDemande,Queue[NumTmp]->CSIdApplication,Taille);
//Queue[NumTmp]->NumDemande =0;
CONTINUE = FALSE;
break;
case FATAL_UNKNOW:
EcrireStatusEssai(NumTmp,Queue[NumTmp]->CSIdApplication,StatusEssai,FATAL_UNKNOW);
strcpy(Sect,"STATUS-");
strcat(Sect,itoa(Queue[NumTmp]->NumDemande,NomFicTmp1,10));
MisAJourLog(Queue[Maf->NumTmp]->CSStatus,"STATUSTRAITEMENT","TERMINE",Queue[NumTmp]->CSLog);
LanceNotification(FATAL_UNKNOW,Queue[NumTmp]->NumOrdre,Queue[NumTmp]->NumDemande,Queue[NumTmp]->CSIdApplication,Taille);
//Queue[NumTmp]->NumDemande =0;
CONTINUE = FALSE;
break;
case FATAL_ERROR:
EcrireStatusEssai(NumTmp,Queue[NumTmp]->CSIdApplication,StatusEssai,FATAL_ERROR);
strcpy(Sect,"STATUS-");
strcat(Sect,itoa(Queue[NumTmp]->NumDemande,NomFicTmp1,10));
MisAJourLog(Queue[Maf->NumTmp]->CSStatus,"STATUSTRAITEMENT","TERMINE",Queue[NumTmp]->CSLog);
LanceNotification(FATAL_ERROR,Queue[NumTmp]->NumOrdre,Queue[NumTmp]->NumDemande,Queue[NumTmp]->CSIdApplication,Taille);
//Queue[NumTmp]->NumDemande =0;
CONTINUE = FALSE;
break;
case ERROR_NETWORK:
EcrireStatusEssai(NumTmp,Queue[NumTmp]->CSIdApplication,StatusEssai,ERROR_NETWORK);
strcpy(Sect,"STATUS-");
strcat(Sect,itoa(Queue[NumTmp]->NumDemande,NomFicTmp1,10));
MisAJourLog(Queue[Maf->NumTmp]->CSStatus,"STATUSTRAITEMENT","TERMINE",Queue[NumTmp]->CSLog);
LanceNotification(ERROR_NETWORK,Queue[NumTmp]->NumOrdre,Queue[NumTmp]->NumDemande,Queue[NumTmp]->CSIdApplication,Taille);
//Queue[NumTmp]->NumDemande =0;
CONTINUE = FALSE;
break;
case FATAL_NOSERV:
EcrireStatusEssai(NumTmp,Queue[NumTmp]->CSIdApplication,StatusEssai,FATAL_NOSERV);
strcpy(Sect,"STATUS-");
strcat(Sect,itoa(Queue[NumTmp]->NumDemande,NomFicTmp1,10));
MisAJourLog(Queue[Maf->NumTmp]->CSStatus,"STATUSTRAITEMENT","TERMINE",Queue[NumTmp]->CSLog);
LanceNotification(FATAL_NOSERV,Queue[NumTmp]->NumOrdre,Queue[NumTmp]->NumDemande,Queue[NumTmp]->CSIdApplication,Taille);
//Queue[NumTmp]->NumDemande =0;
CONTINUE = FALSE;
break;
case INIT_OK:
if(Ecriture==1) EcrireStatusEssai(NumTmp,Queue[NumTmp]->CSIdApplication,StatusEssai,INIT_OK);
strcpy(Sect,"STATUS-");
strcat(Sect,itoa(Queue[NumTmp]->NumDemande,NomFicTmp1,10));
MisAJourLog(Queue[Maf->NumTmp]->CSStatus,"STATUSTRAITEMENT","ENCOURS",Queue[NumTmp]->CSLog);
LanceNotification(INIT_OK,Queue[NumTmp]->NumOrdre,Queue[NumTmp]->NumDemande,Queue[NumTmp]->CSIdApplication,Taille);
break;
case SUCCESS_UNZIP:
if(Ecriture==1) EcrireStatusEssai(NumTmp,Queue[NumTmp]->CSIdApplication,StatusEssai,SUCCESS_UNZIP);
strcpy(Sect,"STATUS-");
strcat(Sect,itoa(Queue[NumTmp]->NumDemande,NomFicTmp1,10));
MisAJourLog(Queue[Maf->NumTmp]->CSStatus,"STATUSTRAITEMENT","ENCOURS",Queue[NumTmp]->CSLog);
LanceNotification(SUCCESS_UNZIP,Queue[NumTmp]->NumOrdre,Queue[NumTmp]->NumDemande,Queue[NumTmp]->CSIdApplication,Taille);
CBar->StepIt();
cStatic->SetWindowText("Dézippage en cours...");
break;
default:
c1= new char[50];
c2= new char[50];
CBar->SetStep(10);
strncpy(c1,Trans,5);
c1[5]='\0';
if(atoi(c1)==99999)
{
NbFic++;
strcpy(NomFicTmp,"FICREC-");
strcat(NomFicTmp,itoa(NbFic,NomFicTmp1,10));
EcrirePipe(Queue[NumTmp]->CSIdApplication,ECRIT_PIPE,Queue[NumTmp]->NumOrdre,Queue[NumTmp]->NumDemande,&Trans[5]);
MisAJourLog(Queue[Maf->NumTmp]->CSDemande,NomFicTmp,&Trans[5],Queue[NumTmp]->CSLog);
EcrireStatusEssai(NumTmp,Queue[NumTmp]->CSIdApplication,StatusEssai,ECRIT_PIPE);
cStatic->SetWindowText(&Trans[5]);
}
else if(atoi(c1)==99998)
{
TFE = new char[50];
TFET = new char[50];
InfoT = new char[1000];
int a = 0;
int Pp =0;
for(int o=strlen("99998Envoi en cours : "); o<=strlen(Trans);o++)
{
if((int)Trans[o]-48>=0&&(int)Trans[o]-48<=9)
{
if(a==0)a =1;
if(a==1)
{
TFE[Pp]=Trans[o];
Pp++;
}
if(a==2)a=3;
if(a==3)
{
TFET[Pp]=Trans[o];
Pp++;
}
}
else
if (a ==1){a=2;TFE[Pp]='\0';Pp=0;}
else
if(a==3){TFET[Pp]='\0';break;}
}
CBar->SetRange32(0,atoi(TFET));
CBar->SetPos(atoi(TFE));
cStatic->SetWindowText(&Trans[5]);
strcpy(InfoT,TFET);
strcat(InfoT,"|");
strcat(InfoT,TFE);
EcrirePipe(Queue[NumTmp]->CSIdApplication,ECRIT_PIPE_TAILLE_ENVOI,Queue[NumTmp]->NumOrdre,Queue[NumTmp]->NumDemande,InfoT);
delete []TFE;TFE = NULL;
delete []TFET;TFET =NULL;
delete []InfoT;InfoT=NULL;
}
else if(atoi(c1)==99997)
{
TFE = new char[50];
TFET = new char[50];
InfoT = new char[1000];
int a = 0;
int Pp =0;
for(int o=strlen("99997Recept en cours : "); o<=strlen(Trans);o++)
{
if((int)Trans[o]-48>=0&&(int)Trans[o]-48<=9)
{
if(a==0)a =1;
if(a==1)
{
TFE[Pp]=Trans[o];
Pp++;
}
if(a==2)a=3;
if(a==3)
{
TFET[Pp]=Trans[o];
Pp++;
}
}
else
if (a ==1){a=2;TFE[Pp]='\0';Pp=0;}
else
if(a==3){TFET[Pp]='\0';break;}
}
CBar->SetRange32(0,atoi(TFET));
CBar->SetPos(atoi(TFE));
cStatic->SetWindowText(&Trans[5]);
strcpy(InfoT,TFET);
strcat(InfoT,"|");
strcat(InfoT,TFE);
EcrirePipe(Queue[NumTmp]->CSIdApplication,ECRIT_PIPE_TAILLE_RECU,Queue[NumTmp]->NumOrdre,Queue[NumTmp]->NumDemande,InfoT);
delete []TFE;TFE = NULL;
delete []TFET;TFET =NULL;
delete []InfoT;InfoT=NULL;
}
else
{
CBar->StepIt();
cStatic->SetWindowText(Trans);
}
delete []c1;
delete []c2;
break;
}
WaitWithMessageLoop(NULL);
Ecriture = 1;
}
CloseHandle(Hpipe);Hpipe = NULL;
if(osVerInfo.dwPlatformId==VER_PLATFORM_WIN32_WINDOWS)
{
PostMessage(HWND_BROADCAST,MESSDEL,Numero,0);
delete envoiI[NumTmp];
envoiI[NumTmp] = NULL;
}
delete []TransOld;TransOld=NULL;
delete []tmp;tmp=NULL;
delete []Buf;Buf=NULL;
delete []Transmet;Transmet=NULL;
if(Hpipe)CloseHandle(Hpipe);
if(Maf!=NULL)
{
Maf->OK = res;
Maf->EndModalLoop(Maf->IdModal);
}
AfxEndThread(0,TRUE);
NOK:
if(Hpipe)CloseHandle(Hpipe);
cStatic->SetWindowText("Service TelintransCom erreur !!!ARRET");
EcrireStatusEssai(NumTmp,Queue[NumTmp]->CSIdApplication,StatusEssai,BROKEN_PIPE);
MisAJourLog(Queue[NumTmp]->CSStatus,"STATUSTRAITEMENT","TERMINE",Queue[NumTmp]->CSLog);
LanceNotification(BROKEN_PIPE,Queue[NumTmp]->NumOrdre,Queue[NumTmp]->NumDemande,Queue[NumTmp]->CSIdApplication,Taille);
//Queue[NumTmp]->NumDemande =0;
if(Maf!=NULL)
{
Maf->EndModalLoop(Maf->IdModal);
Maf->OK =0;
}
delete []tmp;tmp=NULL;
delete []Buf;Buf=NULL;
delete []Transmet;Transmet=NULL;
AfxEndThread(0,TRUE);
return 0;
}