Exemple #1
0
void child_process(int sock, int number) {
    char fd_buff[16];
    char buff[1024];
    while (true) {
        // get fd
        int fd;
        socket_fd_read(sock, fd_buff, sizeof(fd_buff), &fd);
        if (fd == -1)
            continue;

        // Work with income socket
        ssize_t size = recv(fd, buff, sizeof(buff), MSG_NOSIGNAL);
        if (size == 0)
            break;

        buff[size] = '\0';

        FILE *log = fopen("/home/box/error.log", "w");

        std::string url = parseHttpGet(buff, size);
        fprintf(log, "URL1: %s\n", url.c_str());
        url = parseUrl(url);
        fprintf(log, "URL2: %s\n", url.c_str());

        fprintf(log, "URL3: %s\n", getPostfix(url).c_str());

        std::string response;
        if (getPostfix(url) != "html") {
            response = HttpResponse404();
        }
        else {
            std::string filename = directory + url;
            fprintf(log, "FILE: %s\n", filename.c_str());
            if (checkFile(filename)) {
                std::string content = readFile(filename);
                response = HttpResponse200(content.c_str(), content.size());
            }
            else {
                response = HttpResponse404();
            }
        }

        fprintf(log, "RESPONSE: %s\n", response.c_str());
        send(fd, response.c_str(), response.length(), MSG_NOSIGNAL);
        close(fd);
    }
    close(sock);
}
Exemple #2
0
void Logger::log( const char *s , LogOutputMode mode , Logger::LogLevel p_logLevel )
{
	// check needs to be excluded
	if( settings == NULL )
		attachRoot(); 
	if( settings -> isExcluded( s ) )
		return;

	AIEngine& engine = AIEngine::getInstance();
	EngineThreadHelper *logTail = EngineThreadHelper::getThreadObject();

	LogManager *logManager = engine.getLogManager();
	if( logTail == NULL ) {
		logManager -> add( &s , 1 , p_logLevel , getPostfix() );
		return;
	}
	
	// release old
	String& w = logTail -> lastMsg;
	if( logTail -> remains )
		if( mode == Logger::LogStart || mode == Logger::LogDefault ) {
			const char *p = w;
			logManager -> add( &p , 1 , p_logLevel , getPostfix() );

			logTail -> remains = false;
			w.clear();
		}

	w += s;
	if( mode ==	Logger::LogLine || mode == Logger::LogStart )
		w += "\n";

	if( mode == Logger::LogStop || mode == Logger::LogDefault ) {
		const char *p = w;
		logManager -> add( &p , 1 , p_logLevel , getPostfix() );
		logTail -> remains = false;
		w.clear();
	}
	else
		logTail -> remains = true;
}
Exemple #3
0
void Logger::logObject( const char *prompt , Object *obj , Logger::LogLevel p_logLevel )
{
	if( settings == NULL )
		attachRoot(); 
	if( settings -> logDisabled( p_logLevel ) )
		return;

	const char *lines[2];
	String p = "%s: ";
	p += prompt;
	lines[ 0 ] = p;
	
	SerializeObject *so = obj -> getSerializeObject();
	Object::serialize( obj , *so );

	String data = so -> getDataStringNameToValue();
	lines[ 1 ] = data;

	LogManager *logManager = AIEngine::getInstance().getLogManager();
	logManager -> add( lines , 2 , p_logLevel , getPostfix() );
}
Exemple #4
0
int main(){
	Node* head=NULL;
	string nifix;
	int op1;
	int op2;
	string tempop="";
	bool hasTemp=false;
	int result;
	cout<<"enter the nifix expression\n";
	getline(cin,nifix);
	string postfix=getPostfix(nifix);
	cout<<"postfix:"<<postfix<<endl;
	int size=postfix.size();

	for(int i=0;i<size;i++){
		char in=postfix[i];
		switch(in){
			case '+':op2=Pop(head);
					 op1=Pop(head);
					 result=op1+op2;
					 Push(head,result);
					 break;
			case '-':op2=Pop(head);
					 op1=Pop(head);
					 result=op1-op2;
					 Push(head,result);
					 break;
			case '*':op2=Pop(head);
					 op1=Pop(head);
					 result=op1*op2;
					 Push(head,result);
					 break;
			case '/':op2=Pop(head);
					 op1=Pop(head);
					 if(op2==0)
					 {
						 cout<<"divid 0\n";
						 exit(-1);
					 }
					 result=op1/op2;
					 Push(head,result);
					 break;
			case '%':op2=Pop(head);
					 op1=Pop(head);
					 if(op2==0)
					 {
						 cout<<"divid 0\n";
						 exit(-1);
					 }
					 result=op1%op2;
					 Push(head,result);
					 break;
			case ' ':
					 if(hasTemp){
						 hasTemp=false;
						 op1=stoi(tempop);
						 cout<<"digit:"<<op1<<endl;
						 tempop="";
						 Push(head,op1);
					 }
					 break;
			default:
					 hasTemp=true;
					 tempop.push_back(in);
					 break;
		}
	}
	cout<<"result: "<<head->data<<endl;;
	return 0;
}