Exemplo n.º 1
0
// creates a directory and all its parent directories that don't exist yet
bool CreateAll(const WCHAR *dir)
{
    ScopedMem<WCHAR> parent(path::GetDir(dir));
    if (!str::Eq(parent, dir) && !Exists(parent))
        CreateAll(parent);
    return Create(dir);
}
Exemplo n.º 2
0
int main(int argc, char* argv[])
{
	ADTErr err;
	CdrStock* cdrQ;
	ProtecQueue* dataQ;
	sig sigBill, sigProc, sigFriends;
	sigset_t blockMask;
	Params ptr;
	
	LogCreate(LOG_MODE, LOG_NAME);
	
	
	Args* args = malloc(GetSizeOfArgs());
	if (NULL == args)
	{
		ERR_PRINT("allocation failed, %s", "args");
		return -1;
	}
	

	
	ArgsSet(args, argc, argv);
	DEBUG_PRINT("Path given: %s", GetPath(args, &err));
	
	
	if (ERR_OK != CreateAll(&cdrQ, &dataQ))
	{
		ERR_PRINT("%s", "failed to create queues");
		free(args);
		return -1;
	}	
	
	if (ERR_OK != SignalInitAll( &sigBill, &sigProc, &sigFriends, &blockMask) )
	{
		free(args);
		return -1;
	}
	
	ptr.m_sizeIsdn = GetSubscriberHashSize(args, &err);
	ptr.m_sizeOperator = GetOperatorHashSize(args, &err);
	ptr.m_queue = dataQ;
	
	if (ERR_OK != InsertAllCdrFiles(cdrQ, GetPath(args, &err)))
	{
		ERR_PRINT("%s", "failed: InsertAllCdrFiles");
		free(args);
		return -1; 
	}
	
	if (ERR_OK != StartReadingThreads(NUM_OF_THREADS, cdrQ, dataQ))
	{
		ERR_PRINT("%s", "failed: StartReadingThread");
		free(args);
		return -1; 
	}
	
	if (0 != pthread_create(&s_tidProc, NULL, ProcessorWork, (void*)&ptr))
	{
		ERR_PRINT("%s", "failed: pthread_create");
		free(args);
		return -1;
	}
		
	if (0 != pthread_join(s_tidProc, NULL))
	{
		ERR_PRINT("%s", "failed: pthread_join");
		free(args);
		return -1;
	}
	
	if (ERR_OK != DestroyAll(&cdrQ, &dataQ))
	{
		ERR_PRINT("%s", "failed: DestroyAll");
		free(args);
		return -1;
	}
	free(args);
	return 0;
}