int SimpleServer::run(void *pTask)
{
	OLFO* oracle=(OLFO*)pTask;
	
	int 	serversocket;
	struct sockaddr_in address;
	int 	clientsocket;
	
	if ((serversocket=socket(AF_INET,SOCK_STREAM,0))==0)
	{
		perror("create socket");
		exit(EXIT_FAILURE);
	}	
	address.sin_family = AF_INET;
	address.sin_addr.s_addr = INADDR_ANY;
	address.sin_port = htons(7000);
	if (bind(serversocket,(struct sockaddr *)&address,sizeof(address))<0)
	{
		perror("bind");
		exit(EXIT_FAILURE);
	}
	
	if (listen(serversocket,3)<0)
	{
		perror("listen");
		exit(EXIT_FAILURE);
	}
#ifdef _WIN32	
	int addrlen=sizeof(address);
#else
	socklen_t addrlen=sizeof(address);
#endif
	printf("length\ttype\tseq\ttermid\t\t\t\ttime\n");//printf("new socket is %d\n",clientsocket);
	while ((clientsocket=accept(serversocket,(struct sockaddr *)&address,&addrlen))>0)
	{		
		while(true){
			int ret=processRequests(oracle,clientsocket);
			if(ret>=0){
				continue;
			}
			break;
			//请求断开包处理			
		}
#ifdef _WIN32	
	closesocket(clientsocket);
#else
	close(clientsocket);
#endif		
	
	}
#ifdef _WIN32	
	closesocket(serversocket);
#else
	close(serversocket);
#endif	

	return 0;
}
void
controllerService_t::fsm(void)
{
	while (1) {
		switch (this->getState()) {
			case QSERVICE_STARTING:
			
				setState(QSERVICE_RUNNING);
				break;

			case QSERVICE_RUNNING:
				
				processRequests();
				break;

			case QSERVICE_STOPPED:
				
				if (false == this->stopDependencies()) 
					m_log->error("Error while attempting to stop dependent services", eventlog_cat_t::CAT_CONTROLLER, false);
				

				QCoreApplication::quit();
				break;

			case QSERVICE_PAUSED:
				
				if (false == this->pauseDependencies()) 
					m_log->error("Error while attempting to pause dependent services, execution state is undefined upon resumption of the controller service", eventlog_cat_t::CAT_CONTROLLER, false);

				QThread::msleep(500);
				break;

			case QSERVICE_RESUME:
				
				if (false == this->resumeDependencies())
					m_log->error("Error while attempting to resume dependent services, execution state is undefined upon resumption of the controller service", eventlog_cat_t::CAT_CONTROLLER, false);

				setState(QSERVICE_STARTING);
				break;

			case QSERVICE_INVALID:

				QThread::msleep(500);
				break;

			default:

				m_log->info("Invalid state encountered");
				setState(QSERVICE_STOPPED);
				break;
		}
	}

	return;
}
Beispiel #3
0
void
workerService_t::fsm(void)
{
	while (1) {
		switch (this->getState()) {
			case QSERVICE_STARTING:

				setState(QSERVICE_RUNNING);
				processRequests();
				break;

			case QSERVICE_RUNNING:
				
				QThread::msleep(1000);
				break;

			case QSERVICE_STOPPED:
							
				m_http->stop();
				m_http	= nullptr;
				m_wthr	= nullptr;
				m_log	= nullptr;
				QCoreApplication::quit();
				break;

			case QSERVICE_PAUSED:

				m_http->stop();
				QThread::msleep(500);
				break;

			case QSERVICE_RESUME:

				setState(QSERVICE_STARTING);
				break;

			case QSERVICE_INVALID:

				QThread::msleep(500);
				break;

			default:

				m_log->info("Invalid state encountered");
				setState(QSERVICE_STOPPED);
				break;
		}
	}

	return;
}
Beispiel #4
0
int main(int argc,char ** argv,char ** envp)
{
   int shid = shmget(SHARED_KEY,sizeof(DasaServerInfo),IPC_CREAT | 0666);
   if (shid < 0)
     {
       perror("failed to get shid");
       return -1;
     }
    requestedState = shmat(shid,0,0);
    if (requestedState == NULL || (int)requestedState == -1)
      {
        perror("attaching shared memory");
        return -2;
      }
    
    resetState(&currentState);
    resetState(requestedState);
    
    processRequests();
    shmdt(requestedState);
    return 0;
}