Exemplo n.º 1
0
MojErr MojLunaServiceTest::run()
{
	MojErr err = MojErrNone;

#ifdef USE_SOCKET_SERVICE
	MojEpollReactor reactor;
	MojSocketService service(reactor);
	err = reactor.init();
	MojErrCheck(err);
#else
	MojGmainReactor reactor;
	err = reactor.init();
	MojErrCheck(err);
	MojLunaService service;
#endif

	MojLunaTestClient clientService(service);
	err = service.open(m_name);
	MojTestErrCheck(err);
	err = service.attach(reactor.impl());
	MojErrCheck(err);

	err = clientService.testEchoRequest();
	MojTestErrCheck(err);

//	err = clientService.testInvalidPayload();
//	MojTestErrCheck(err);

	err = clientService.testQueue();
	MojTestErrCheck(err);

	err = clientService.testMultiEcho();
	MojTestErrCheck(err);

	err = clientService.testCancel();
	MojTestErrCheck(err);

//      commented because this request is require writing a special handler for error message
//	err = clientService.testInvalidMethod();
//	MojTestErrCheck(err);

	// must be last!
	err = clientService.stopService();
	MojTestErrCheck(err);

	err = service.close();
	MojTestErrCheck(err);

	return MojErrNone;
}
Exemplo n.º 2
0
HandlerServer::HandlerServer(shared_ptr<DataBase> DB) {
	/**Asigna la base de datos al handler del server.**/
	this->DB= DB;
	shared_ptr<TokenAuthentificator> tokenAuth(new TokenAuthentificator(DB));
	shared_ptr<ClientServiceInterface> clientService(new ClientService());
	shared_ptr<SharedClient> sharedClient(new SharedClient(clientService));
	shared_ptr<GcmClient> gcmClientAux(new GcmClient(clientService));
	this->tokenAuthentificator=tokenAuth;
	vecHandler.push_back(shared_ptr<HandlerInterface>(new HandlerUsers(DB,tokenAuthentificator,sharedClient)));
	vecHandler.push_back(shared_ptr<HandlerInterface>(new HandlerInterest(DB,tokenAuthentificator,sharedClient)));
	vecHandler.push_back(shared_ptr<HandlerInterface>(new HandlerMatch(DB,tokenAuthentificator,sharedClient,gcmClientAux)));
	vecHandler.push_back(shared_ptr<HandlerInterface>(new HandlerChat(DB,tokenAuthentificator,sharedClient,gcmClientAux)));
	vecHandler.push_back(shared_ptr<HandlerInterface>(new HandlerToken(DB,tokenAuthentificator,sharedClient)));

}
Exemplo n.º 3
0
int main(int argc, char **argv)
{
	pid_t childpid;

	if (argc<3){
		cout<< "\nusage: ./server HOST PORT [debug]\n";
		return 0;	
	}else {
		SERV_PORT = atoi(argv[2]);
		runningHost=argv[1];
	}
		

	/*signals used for removing server information*/ 
    signal(SIGINT, sig_int);
    signal(SIGTERM, sig_term);
	/*signals used for removing server information*/ 
	

	

	/*register server*/
	if(myregister()<0) 
		cout<<"Registeration Failed\n";
	else 
		cout<<"Server has been registered successfully\n";
	/*register server*/
	
	/*daemon or debug*/ 
	if ((argc==4) && (strcmp(argv[3],"debug")==0)){
		dFlag=1;
		printf("||||debug mode|||\n");
	} 

	else{
		printf("Server is running as a Daemon Process now\n");
		daemon_init(argv[0], 0);
	}
	/*daemon or debug*/ 



//************************************SOCKET******************************************************
	int listenfd;	
	listenfd = socket (AF_INET6, SOCK_STREAM, 0);
	if (listenfd==-1) {
				if (dFlag) printf ( "(Server) socket error: %s\n",strerror(errno));
				return 0;
			}
//************************************SOCKET******************************************************
	printf("(Server) Listen socket is created at: %d\n",listenfd);


//************************************BIND********************************************************	
	struct sockaddr_in6 servaddr;
	bzero(&servaddr, sizeof(servaddr));
	servaddr.sin6_family = AF_INET6;
    servaddr.sin6_addr = in6addr_any;
	servaddr.sin6_port = htons (SERV_PORT);

	if(bind(listenfd, (SA *) &servaddr, sizeof(servaddr))<0){
				printf ( "(Server) for socket %d bind error: %s\n",listenfd,strerror(errno));
				return 0;
			}
	



//********************************* lISTEN TO LISTEN SOCKET **************************************	
	
	if (listen(listenfd, LISTENQ)==-1) {
				printf ( "(Server) for socket %d listen error: %s\n",listenfd,strerror(errno));
				return 0;
			}





//*********************************** FOR TERMINATING CHILD (Z) **************************************	
    signal (SIGCHLD, sig_chld);





//**************************** ACCEPT A CLIENT AND FORK A CHILD SERVER ***************************	

	int serviceSocket;
	socklen_t clilen;
	struct sockaddr_storage cliaddr;
	for ( ; ; ) {

			clilen = sizeof(cliaddr);

			serviceSocket = accept(listenfd, (SA *) &cliaddr, &clilen);
			if (serviceSocket==-1) {
	
				printf ( "(Server) for socket %d accept error: %s\n",listenfd,strerror(errno));
			}		

			

			if ( (childpid = fork()) == 0) { // child process





					printf ("\nA client is connected to socket %d ",serviceSocket);
					close(listenfd); // close listening socket
					clientService(serviceSocket); // process the request 	
					exit (0);
			}//if FORK

			close(serviceSocket); // parent closes connected socket

	}//for
//**************************** ACCEPT A CLIENT AND FORK A CHILD SERVER ***************************	

}//main