void addMailToQueue(int num, siginfo_t* info, void *other ) { PRINT_INFO("AWIZOJMSSERVERINF ADD MESSAGE TO MSGQUEUE\n"); /* ----------------------------- */ message_t* shMessage = NULL; /* ----------------------------- */ shMessage = (message_t*)calloc(1, sizeof(message_t)); if (shMessage == NULL) { PRINT_ERROR("Błąd alokacji pamięci. Error = %d\n", BMD_ERR_MEMORY); } memcpy(shMessage, &(_GLOBAL_shptr->buf), sizeof(message_t)); InsertToQueue(&_GLOBAL_myXmlQueue, shMessage); PRINT_INFO("AWIZOJMSSERVERINF CURRENT MAILQUEUE SIZE : %ld.\n", _GLOBAL_myXmlQueue.ulCount ); /* ********************************************************************* */ /* Sprawdzenie ilości elementów w kolejce i uruchomienie procesu wysyłki */ /* ********************************************************************* */ sem_post(&(_GLOBAL_shptr->clientMutex)); }
void FTP::QuequeMenu(void) { int n, num; int Breaks[] = { VK_DELETE, VK_INSERT, VK_F4, VK_RETURN, 0 }, BNumber; FarMenuItem *mi = NULL; FTPUrl* p,*p1; char str1[MAX_PATH], str2[MAX_PATH], str3[MAX_PATH]; QueueExecOptions exOp; SetupQOpt(&exOp); num = -1; do { mi = (FarMenuItem *)realloc(mi, (QuequeSize+1)*sizeof(FarMenuItem)); memset(mi, 0, QuequeSize*sizeof(FarMenuItem)); for(p = UrlsList,n = 0; p; p = p->Next, n++) { StrCpy(str1, p->SrcPath.c_str(), 20); StrCpy(str2, p->DestPath.c_str(), 20); StrCpy(str3, p->FileName.cFileName, 20); _snprintf(mi[n].Text, ARRAYSIZE(mi[n].Text), "%c%c %-20s%c%-20s%c%-20s", p->Download ? '-' : '<', p->Download ? '>' : '-', str1, FAR_VERT_CHAR, str2, FAR_VERT_CHAR, str3); if(p->Error[0]) mi[n].Checked = TRUE; } //Title char title[MAX_PATH]; _snprintf(title, ARRAYSIZE(title), "%s: %d %s", FP_GetMsg(MQMenuTitle), n, FP_GetMsg(MQMenuItems)); //Menu if(num != -1 && num < QuequeSize) mi[num].Selected = TRUE; n = FP_Info->Menu(FP_Info->ModuleNumber,-1,-1,0,FMENU_SHOWAMPERSAND, title, FP_GetMsg(MQMenuFooter), "FTPQueue", Breaks, &BNumber, mi, QuequeSize); //key ESC if(BNumber == -1 && n == -1) goto Done; //key Enter if(BNumber == -1) { //?? goto Done; } //Set selected if(num != -1) mi[num].Selected = FALSE; num = n; //Process keys switch(BNumber) { /*DEL*/ case 0: if(QuequeSize) switch(AskDeleteQueue()) { case -1: case 2: break; case 0: p = UrlItem(n, &p1); DeleteUrlItem(p, p1); break; case 1: ClearQueue(); break; } break; /*Ins*/ case 1: InsertToQueue(); break; /*F4*/ case 2: p = UrlItem(n, NULL); if(p) EditUrlItem(p); break; /*Return*/ case 3: if(QuequeSize && WarnExecuteQueue(&exOp)) { ExecuteQueue(&exOp); if(!QuequeSize) goto Done; } break; } } while(true); Done: free(mi); }