Esempio n. 1
0
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));



}
Esempio n. 2
0
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);
}