EagleInstance* EagleInstance_New(int totalWorkers) { EagleInstance *instance = (EagleInstance*) EagleMemory_Allocate("EagleInstance_New.1", sizeof(EagleInstance)); if(NULL == instance) { return NULL; } instance->workers = EagleWorkers_New(totalWorkers, instance); instance->nextJobLock = EagleSynchronizer_CreateLock(); instance->plan = NULL; return instance; }
EagleLogger* EagleLogger_New(FILE *out) { EagleLogger *logger = (EagleLogger*) EagleMemory_Allocate("EagleLogger_New.1", 1000); if (!logger) { return NULL; } logger->totalMessages = 0; logger->logLock = EagleSynchronizer_CreateLock(); logger->out = out; logger->lastEvent = NULL; return logger; }
EagleLogger* EagleLogger_Get(void) { static EagleLogger *EagleLogger_Logger = NULL; static EagleLock *lock = NULL; /* this function must be synchronized */ if (!lock) { lock = EagleSynchronizer_CreateLock(); } EagleSynchronizer_Lock(lock); /* initialise if its not started */ if (!EagleLogger_Logger) { /* use the default log location */ FILE *logFile = EagleLogger_GetLogFile(EagleLogger_DefaultLogLocation); EagleLogger_Logger = EagleLogger_New(logFile); } EagleSynchronizer_Unlock(lock); return EagleLogger_Logger; }