Example #1
0
int main() {

	startDaemon();

	Fan fan("/sys/devices/platform/applesmc.768", "fan1");
	Sensor coreOne(
			"/sys/devices/platform/applesmc.768/subsystem/devices/coretemp.0",
			"temp2");
	Sensor coreTwo(
			"/sys/devices/platform/applesmc.768/subsystem/devices/coretemp.0",
			"temp3");
	Load load("/proc", "stat");

	fan.writeContent(fan.getPath() + "/" + fan.getName() + "_manual", "1");

#if FANMINSPEED
	fan.setFanMinSpeed(FANMINSPEED);
#endif
#if FANMAXSPEED
	fan.setFanMaxSpeed(FANMAXSPEED);
#endif

	int loadFactor = (fan.getFanMaxSpeed() - fan.getFanMinSpeed())
			/ (LOADSCALETO - LOACSCALEFROM);
	int sensorFacotor = (fan.getFanMaxSpeed() - fan.getFanMinSpeed())
			/ (SENSORSCALETO - SENSORSCALEFROM);

	while (1) {
		double loadAverage = 0;
		double sensorAverage = 0;
		for (int i = 0; i < AVERAGECOUNT; i++) {
			loadAverage += load.getAverage();
			sensorAverage += (coreOne.getTemp() + coreTwo.getTemp());
			sleep(SLEEPTIME);
		}

		loadAverage = loadAverage / AVERAGECOUNT;
		sensorAverage = sensorAverage / ((2 * AVERAGECOUNT) * 100000);

		logToFile(DAEMON_LOG, dtos(loadAverage).c_str());
		logToFile(DAEMON_LOG, dtos(sensorAverage).c_str());

		if (loadAverage > LOACSCALEFROM) {
			fan.setSpeed(
					fan.getFanMinSpeed()
							+ loadFactor * (loadAverage - LOACSCALEFROM));
		} else {
			fan.setSpeed(
					fan.getFanMinSpeed()
							+ sensorFacotor
									* (sensorAverage - SENSORSCALEFROM));
		}
	}
	return (0);
}
Example #2
0
void Logger::log(const std::string& pText, const Type pType, const Output pOutput)
{
	bool outputText(true);
	Type logType(type_);
	Output logOutput(output_);
	
	// Check for non-defaults.
	if (pType != LOG_TYPE_DEFAULT)
		logType = pType;
		
	if (pOutput != LOG_OUTPUT_DEFAULT)
		logOutput = pOutput;
		
	if (LOG_OUTPUT_SILENT == logOutput) // if we're not going to output this, might as well leave now.
		return;
		
	// Check if we are actually going to output this.
	switch (logType) {
		case LOG_TYPE_DEBUG:
			#if !defined(DEBUG)
				outputText = false;
			#endif
			break;
		case LOG_TYPE_INFO:
		case LOG_TYPE_ERROR:
			outputText = true;
			break;
		default:
			log("Logger: Unknown log type! Tried to Log - " + pText, LOG_TYPE_ERROR);
	}
	
	if (false == outputText)// if we're not going to output this, might as well leave now.
		return;
		
	// See where we're going to output this.
	switch (logOutput) {
		case LOG_OUTPUT_FILE:
			logToFile(pText, logType);
			break;
		case LOG_OUTPUT_FILE_AND_TERMINAL:
			logToFile(pText, logType);
			logToTerm(pText, logType);
			break;
		case LOG_OUTPUT_TERMINAL:
			logToTerm(pText, logType);
			break;
		default:
			log("Logger: Unknown log output! Tried to Log - " + pText, LOG_TYPE_ERROR, LOG_OUTPUT_FILE_AND_TERMINAL);
	}
}
Example #3
0
CVisComplexObj::~CVisComplexObj()
{
	logToFile((f, "VisComplexObj is to be deleted\n"));
	int i;
	for (i = 0; i < aiTopIndex; ++i) 
	{
        logToFile((f, "arrays[%d]: 0x%p\n", i, arrays[i]));
		FreeDoubleArray(arrays[i]);
    }
    logToFile((f, "scrVertices: 0x%p\n", scrVertices));
	FreeDoubleArray(scrVertices);
	Show=0;
	update(ACTION_DELETE, (double *)NULL, 0);
    logToFile((f, "VisComplexObj has been deleted\n"));
}
Example #4
0
	 void Connection::doRead(EventBase *evt)
	{
		Event* event = static_cast<Event*>( evt );
		while(true)
		{
			memset(buffer,0,EventBase::MAX_BUFFER_LEN);
			int leftLen = ::recv(socket,buffer,EventBase::MAX_BUFFER_LEN,0);
			logToFile(buffer,leftLen);
			if (leftLen == -1)
			{
				//printf("---接受数据到头了--\n");
				 return;
			}
			if (leftLen == 0)
			{
				event->eventType = ERROR_EVT;
				return;
			}
			
			Record *record = new Record(buffer,leftLen);
			recvs.write(record);
			doReadBack();
			
			if (leftLen < EventBase::MAX_BUFFER_LEN)
			{
		//		break;
			}
		}
		event->startRead();
	}
/*
* Set up logging.
*/
void initializeLogging(char* level) {
  stringstream ss;
  ss << level;
  string levelStr = ss.str();
  stoupper(levelStr); // convert to all caps
  // set logging mode
  if (strcmp(levelStr.c_str(), "OFF") == 0) {
    logMode = OFF;
  } else if ( strcmp(levelStr.c_str(), "ON") == 0 ) {
    logMode = ON;
  } else { //this should never happen
    printf("Error:  received an invalid log mode choice: %d\n", level);
    exit(EXIT_FAILURE);
  }

  if (logMode == ON) {
    // get current timestamp for filename
    time_t rawtime;
    struct tm * timeinfo;
    char buffer [80];
    time ( &rawtime );
    timeinfo = localtime ( &rawtime );
    strftime (buffer,80,"output/output-%Y%m%d_%X.txt",timeinfo);
    puts (buffer);

    outFilename = buffer;
    outFile.open(outFilename);
    logToFile("Program Trail Start:\n\n");
  }
}
Example #6
0
void Log::info(char * _file, int _line, std::string _message){
	if(LOG_LEVEL <= kINFO){
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), INFO_COLOUR_FG | INFO_COLOUR_BG);
		std::cout << "[INFO] FILE:" << _file << " LINE:" << _line << " "  << _message << std::endl;
		if(WRITE_INFO_TO_FILE) {
			logToFile(getDate() + "[INFO] FILE:" + _file + " LINE:" + std::to_string(_line) + _message + "\n");
		}
	}
}
Example #7
0
void FreeDoubleArray(double *data)
{
    if (data != NULL)
	{
		data = data - GetOffset(GetDim(data));
		logToFile((f, "DoubleArrayFreed: 0x%p\n", data));
		delete[] data;
	}
}
//This function uses listTree to build a "full" tree starting from the root element
//The level is used to define the indentation of the printed output
HRESULT buildFullTree(IUIAutomationElement* rootNode)
{
	//Get a TreeWalker object, to parse the UI nodes
	IUIAutomationTreeWalker* walker = nullptr;
	auto hr = g_pAutomation->get_ControlViewWalker(&walker);

	if (FAILED(hr) || walker == nullptr)
	{
		logToFile("Failed walker");
		logToFile("Error code: " + std::to_string(hr));
		return hr;
	}

	//Now build the tree starting with level 1 indentation
	hr = listTree(1, rootNode, walker);
	SAFE_RELEASE(walker);
	return hr;
}
Example #9
0
void Log::info(std::string _message){
	if(LOG_LEVEL <= kINFO){
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), INFO_COLOUR_FG | INFO_COLOUR_BG);
		std::cout << "[INFO] " << _message << std::endl;
		if(WRITE_INFO_TO_FILE) {
			logToFile(getDate() + "[INFO] " +  _message + "\n");
		}
	}
}
void OutputPaneDockWidget::contextMenuEvent ( QContextMenuEvent* event )
{
   QMenu menu;
   QAction clear("Clear",0);
   QAction logToFile("Log to file",0);
   QAction* chosen;

   menu.addAction(&clear);
   menu.addAction(&logToFile);
   chosen = menu.exec(event->globalPos());

   if ( chosen == &clear )
   {
      switch ( ui->outputStackedWidget->currentIndex() )
      {
      case Output_General:
         ui->generalOutputTextEdit->clear();
         break;
      case Output_Build:
         ui->compilerOutputTextEdit->clear();
         break;
      case Output_Debug:
         ui->debuggerOutputTextEdit->clear();
         break;
      case Output_Search:
         ui->searchOutputTextEdit->clear();
         break;
      }
   }

   if ( chosen == &logToFile )
   {
      QString fileName = QFileDialog::getSaveFileName(this, "Log Output", QDir::currentPath(), "Text Document (*.txt)");

      if (fileName.isEmpty())
      {
         return;
      }

      switch ( ui->outputStackedWidget->currentIndex() )
      {
      case Output_General:
         ui->generalOutputTextEdit->clear();
         break;
      case Output_Build:
         ui->compilerOutputTextEdit->clear();
         break;
      case Output_Debug:
         ui->debuggerOutputTextEdit->clear();
         break;
      case Output_Search:
         ui->searchOutputTextEdit->clear();
         break;
      }
   }
}
Example #11
0
File: log.cpp Project: dermoumi/m2n
void Log::error(const char* format, ...)
{
    va_list args;
    va_start(args, format);

    SDL_LogMessageV(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_ERROR, format, args);
    logToFile("ERROR", format, args);

    va_end(args);
}
Example #12
0
File: log.cpp Project: dermoumi/m2n
void Log::warning(const char* format, ...)
{
    va_list args;
    va_start(args, format);

    SDL_LogMessageV(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_WARN, format, args);
    logToFile("WARN", format, args);

    va_end(args);
}
Example #13
0
File: log.cpp Project: dermoumi/m2n
void Log::info(const char* format, ...)
{
    va_list args;
    va_start(args, format);

    SDL_LogMessageV(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO, format, args);
    logToFile("INFO", format, args);

    va_end(args);
}
Example #14
0
File: log.cpp Project: dermoumi/m2n
void Log::fatal(const char* format, ...)
{
    va_list args;
    va_start(args, format);

    SDL_LogMessageV(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_CRITICAL, format, args);
    logToFile("FATAL", format, args);

    va_end(args);
}
Example #15
0
File: log.cpp Project: dermoumi/m2n
void Log::debug(const char* format, ...)
{
    va_list args;
    va_start(args, format);

    SDL_LogMessageV(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_DEBUG, format, args);
    logToFile("DEBUG", format, args);

    va_end(args);
}
Example #16
0
File: log.cpp Project: dermoumi/m2n
void Log::verbose(const char* format, ...)
{
    va_list args;
    va_start(args, format);

    SDL_LogMessageV(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_VERBOSE, format, args);
    logToFile("VERBOSE", format, args);

    va_end(args);
}
Example #17
0
int VariantToDoubleArray(double **data, VARIANT *var)
{
	long uBnd,lBnd;
	int dim, dimlen[MAXDIM];
	int err=0;
	
	// Check for ARRAY of the right type
    logToFile((f, "VaraintToDoubleArray: var = 0x%p\n", var));
	if( var==NULL )						return COMUTIL_ERR_NULL;
    logToFile((f, "VaraintToDoubleArray: var.type = %d\n", var->vt));
	if (var->vt == VT_ERROR){
		*data = NULL;
		return 0;
	}
	if( !( (var->vt) & VT_ARRAY ) )		err += COMUTIL_ERR_ARRAY;
	if( !( (var->vt) & VT_R8 ) )		err += COMUTIL_ERR_TYPE;
	if(err) return err;
	
	// Get Overall Length (number of elements, ignore shape of Safearray)
	dim = SafeArrayGetDim(var->parray);
	for(int d=1; d<=dim; d++){
		SafeArrayGetLBound(var->parray, d, &lBnd);
		SafeArrayGetUBound(var->parray, d, &uBnd);
		dimlen[d-1] = uBnd-lBnd+1;
	}
	
    logToFile((f, "VaraintToDoubleArray: %d, (%d, %d)\n", dim, dimlen[0], dimlen[1]));

	*data = CreateDoubleArray(dim, dimlen);
	if (*data != NULL)
	{
		// Get reference pointer for accessing the SafeArray
		void *sap;
		if( FAILED( SafeArrayAccessData(var->parray, (void**)&sap) )) return COMUTIL_ERR_SAFEARRAY;
		memcpy(*data, sap, sizeof(double) * GetLength(*data));
		
		// Release reference pointer
		SafeArrayUnaccessData (var->parray);
	}
	// Return Success
	return 0;
}
Example #18
0
void Console::log(const LogMessage& message) {
    if (message.string().empty())
        return;

    logToDebug(message);
    logToFile(message);
    if (m_textCtrl != NULL)
        logToConsole(message);
    else
        m_buffer.push_back(message);
}
Example #19
0
double *CopyDoubleArrayStruct(double *data)
{
    if (data == NULL) return NULL;
    int dim = GetDim(data), len = GetLength(data);
    int offset = GetOffset(dim);
	double *result = new double[offset+len];
	logToFile((f, "DoubleArrayCreated: 0x%p\n", result));
	result = result + offset;
    memcpy(result-offset, data-offset, sizeof(double)*offset);
    return result;
}
Example #20
0
/**
 * Funcao que trata de ler de um pipe uma mensagem e registar num ficheiro
 */
int spawnRegWriter(){
    char *regBuffer=(char*)malloc(256);
    int tamRegMsg=0;
    int pid_filhoRegisto = fork();
    
    if(pid_filhoRegisto==0){
        while((tamRegMsg=read(pipeReg[0],regBuffer,256))>0)
            logToFile(regBuffer,tamRegMsg);
    }
    
    return pid_filhoRegisto;
}
Example #21
0
void Log::warn(std::string _message){
	if(LOG_LEVEL <= kWARN){
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), WARN_COLOUR_FG | WARN_COLOUR_BG);
		std::cout << "[WARN] "<< _message << std::endl;
		if(WRITE_WARN_TO_FILE) {
			logToFile(getDate() + "[WARN] " + _message + "\n");
		}
	}
	if(THROW_ON_WARN){
		throw;
	}
}
Example #22
0
void Log::error(char * _file, int _line, std::string _message){
	if(LOG_LEVEL <= kERROR){
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), ERROR_COLOUR_FG | ERROR_COLOUR_BG);
		std::cout << "[ERROR] FILE:" << _file << " LINE:" << _line << " "  << _message << std::endl;
		if(WRITE_ERROR_TO_FILE) {
			logToFile(getDate() + "[ERROR] FILE:" + _file + " LINE:" + std::to_string(_line) + _message + "\n");
		}
	}
	if(THROW_ON_ERROR){
		throw;
	}
}
Example #23
0
void Log::error(std::string _message){
	if(LOG_LEVEL <= kERROR){
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), ERROR_COLOUR_FG | ERROR_COLOUR_BG);
		std::cout << "[ERROR]" << _message << std::endl;
		if(WRITE_ERROR_TO_FILE) {
			logToFile(getDate() + "[ERROR] " + _message + "\n");
		}
	}
	if(THROW_ON_ERROR){
		throw;
	}
}
Example #24
0
double *CreateDoubleArray(int dim, int *dimlen)
{
	int i, len = 1, offset = GetOffset(dim);
	for (i=0; i < dim; ++i) len = len * dimlen[i];
	if (len == 0) return NULL;
	double *result = new double[offset+len];
	logToFile((f, "DoubleArrayCreated: 0x%p\n", result));
	result = result + offset;
	((int *)result)[-1] = len;
    ((int *)result)[-2] = dim;
	for (i=0; i < dim; ++i)
		((int *)result)[-3-i] = dimlen[i];
	return result;
}
Example #25
0
	int printf(const char *fmt, ...) {
		va_list ap;
		
		va_start(ap, fmt);
		vsprintf(big_string, fmt, ap);
		va_end(ap);

		logToFile(big_string);

		if (consoleView) {
			consoleView->addString(big_string);
		}
		return 0;
	}
Example #26
0
void dbgMsg(DEBUG_LEVEL dbg_level, const char *fmt, ...) {
	va_list ap;

	if (dbg_level > current_debug_level) {
		return;
	}

	va_start(ap, fmt);
	vsprintf(big_string, fmt, ap);
	va_end(ap);

	if (consoleView) {
		consoleView->addText(big_string);
	}
	logToFile(big_string);
}
Example #27
0
STDMETHODIMP CVisComplexObj::put_vertices(VARIANT newVal)
{
	double *data;
	HRESULT result = VariantToDoubleArray(&data, &newVal);
	logToFile((f, "putVertices: %d\n", result));
	if (result) return E_INVALIDARG;
    if (data != NULL)
    {
        if (GetDim(data) != 2) return E_INVALIDARG;
        if (GetLength(data, 0) != 2 && GetLength(data, 0) != 3) return E_INVALIDARG;
    }
	setVertices(data);
    FreeDoubleArray(scrVertices);
    scrVertices = CopyDoubleArrayStruct(getVertices());
    updateScrVertices();
	return S_OK;
}
Example #28
0
//生成log字符串
void Log::logData(LogLevel level, const char * buf)
{
	static char s_log_level[Level_count][10]=
	{
		"Error",
		"Warning",
		"Info",
		"Trace",
		"Debug"
	};

	char format_log[MAX_LOG_SIZE];
	std::string current_time=StrTimeStamp();
	sprintf_s(format_log, sizeof(format_log), "[%s] [threadID:%d][%s] %s\n", s_log_level[level],GetCurrentThreadId(),current_time.c_str(), buf);

	//如果是错误信息,则高亮显示
	if(level==Error)
	{
		setColor(GREEN);
		logToConsole(format_log);
		resetColor();

		logToErrFile(format_log);
	}
	else if(level==Warn)
	{
		setColor(CYAN);
		logToConsole(format_log);
		resetColor();

		logToErrFile(format_log);
	}
	else
		logToConsole(format_log);

	logToFile(format_log);
	m_log_line++;
	if(m_log_line>=MAX_LOG_LINE)
		m_log_line=0;
}
Example #29
0
void server(session_t* session)
{
    gchar **lines, **tokens, **chunks;
    char verb[VERB_SIZE], resource[RESOURCE_SIZE], protocol[PROTOCOL_SIZE];
    char buffer[BUFFER_SIZE];
    int selectStatus, currentReadFd, readBytes;

    session->q = g_queue_new();

    struct timeval timer;
    timer.tv_sec = 30;
    timer.tv_usec = 0;

    // Setup read file descriptor set and timer for select()
    fd_set reader;
    FD_ZERO(&reader);
    session->read_fds = newFdSet();

    // Keep track of largest file descriptor
    session->listener = createSocket(session->server);
    session->maxFd = session->listener;
    session->connections = g_hash_table_new (g_direct_hash, g_direct_equal);
    FD_SET(session->listener, &session->read_fds);

    // Main Loop
    for (;;)
    {
        reader = session->read_fds;
        selectStatus = select(session->maxFd + 1, &reader, NULL, NULL, &timer);

        if (selectStatus == -1)
        {
            fprintf(stderr, "Select failed\n");
            exit(1);
        }
        // Handle timeouts
        else if (selectStatus == 0)
        {
            if (g_queue_get_length(session->q) > 0)
            {
                session->maxFd = closeSocket(GPOINTER_TO_INT(g_queue_pop_tail(session->q)), session);
                continue;
            }
        }

        // There's something to read
        for(currentReadFd = 0; currentReadFd <= session->maxFd; currentReadFd++)
        {
            if (!FD_ISSET(currentReadFd, &reader))
            {
                continue;
            }

            if (currentReadFd == session->listener)
            {
                newConnection(session);
            }
            else
            {
                memset(buffer, '\0', BUFFER_SIZE);
                memset(verb, '\0', VERB_SIZE);
                memset(resource, '\0', RESOURCE_SIZE);
                memset(protocol, '\0', PROTOCOL_SIZE);

                readBytes = recv(currentReadFd, buffer, BUFFER_SIZE - 1, 0);;

                if (readBytes <= 0)
                {
                    closeSocket(currentReadFd, session);
                    continue;
                }

                chunks = g_strsplit(buffer, "\r\n\r\n", 2);
                lines = g_strsplit(chunks[0], "\r\n", 20);
                tokens = g_strsplit(lines[0], " ", 3);
                strncpy(verb, tokens[0], strlen(tokens[0]));
                strncpy(resource, tokens[1], strlen(tokens[1]));
                strncpy(protocol, tokens[2], strlen(tokens[2]));
                
                setSessionHeaders(session, lines);
                setSessionVerb(session, verb);

                if (session->verb == VERB_HEAD || session->verb == VERB_GET)
                {
                    logToFile(session, currentReadFd, resource, verb, 200);
                    handleRequest(session, currentReadFd, resource, NULL);
                }
                else if (session->verb == VERB_POST)
                {
                    logToFile(session, currentReadFd, resource, verb, 200);
                    handleRequest(session, currentReadFd, resource, chunks[1]);
                }
                else
                {
                    logToFile(session, currentReadFd, resource, verb, 200);
                }

                gchar* connection = (gchar *) g_hash_table_lookup(session->headers, "Connection");

                g_queue_remove(session->q, GINT_TO_POINTER(currentReadFd));
                g_queue_push_head(session->q, GINT_TO_POINTER(currentReadFd));

                if ((g_strcmp0(protocol, "HTTP/1.0") == 0 && g_strcmp0(connection, "keep-alive") != 0) || (g_strcmp0(connection, "close") == 0))
                {
                    closeSocket(currentReadFd, session);
                }
            }
        }
    }

    g_hash_table_destroy(session->connections);
    FD_ZERO(&session->read_fds);
    close(session->listener);
}
Example #30
0
void destroyTorrentInfo( ) { 
  int i; 
    
  struct torrentInfo * t = globalTorrentInfo;

  logToFile( t,  "SIGINT Received - Shutting down ... \n");
  printf("\n\nSIGINT Received - Shutting down ... \n");

  // Tell the tracker we're shutting down.
  doTrackerCommunication( t, TRACKER_STOPPED );

  logToFile( t, "SHUTDOWN Notified tracker we're stopping\n");
  printf("Notified tracker we're stopping\n");

  free( t->announceURL );
  free( t->trackerDomain );
  free( t->trackerIP );

  for ( i = 0; i < t->numChunks; i ++ ) {
    if (! t->chunks[i].have )  {
      free( t->chunks[i].data );
      free( t->chunks[i].subChunks );
    }
  }

  for ( i = 0; i < t->peerListLen; i ++ ) {
    if ( t->peerList[i].defined ) {
      destroyPeer( &t->peerList[i], t );
    }
  }

  printf("Freed data chunks and peer metadata structures\n");
  logToFile( t, "SHUTDOWN Freed data chunks and peer metadata structures\n");

  free( t->chunks );
  free( t->chunkOrdering );
  free( t->name );
  free( t->comment );
  free( t->infoHash );
  free( t->peerID );
  free( t->peerList );
  Bitfield_Destroy( t->ourBitfield );
  if ( timer_delete( t->timerTimeoutID ) ) {
    perror("timer_delete");
    logToFile( t, "SHUTDOWN Error deleting timer.\n");
  }
  if ( timer_delete( t->timerChokeID ) ) {
    perror("timer_delete");
    logToFile( t, "SHUTDOWN Error deleting timer.\n");
  }


  munmap( t->fileData, t->totalSize );

  printf("Unmapped file.\nClosing logfile.\n");
  logToFile( t, "SHUTDOWN Unmapped file.\n");
  logToFile( t, "SHUTDOWN Closing logfile.\n");

  if ( t->logFile ) {
    fclose( t->logFile );
  }

  free( t );

  printf("Have a nice day!\n");
  exit(1);
    
  return;

}