示例#1
0
void socketProcess(int sid)
{
    socket_t	*sp;
    int			all;

    all = 0;
    if (sid < 0) {
        all = 1;
        sid = 0;
    }
    /*
     * 	Process each socket
     */
    for (; sid < socketMax; sid++) {
        if ((sp = socketList[sid]) == NULL) {
            if (! all) {
                break;
            } else {
                continue;
            }
        }
        if (socketReady(sid)) {
            socketDoEvent(sp);
        }
        if (! all) {
            break;
        }
    }
}
示例#2
0
文件: main.c 项目: codywon/bell-jpg
int main( int argc, char** argv )
{
    /*
     *	Initialize the memory allocator. Allow use of malloc and start
     *	with a 60K heap.  For each page request approx 8KB is allocated.
     *	60KB allows for several concurrent page requests.  If more space
     *	is required, malloc will be used for the overflow.
     */
    bopen( NULL, ( 60 * 1024 ), B_USE_MALLOC );
    signal( SIGPIPE, SIG_IGN );

    /*
     *	Initialize the web server
     */
    if ( initWebs() < 0 )
    {
        return -1;
    }

#ifdef WEBS_SSL_SUPPORT
    websSSLOpen();
#endif

    /*
     *	Basic event loop. SocketReady returns true when a socket is ready for
     *	service. SocketSelect will block until an event occurs. SocketProcess
     *	will actually do the servicing.
     */
    while ( !finished )
    {
        if ( socketReady( -1 ) || socketSelect( -1, 1000 ) )
        {
            socketProcess( -1 );
        }

        websCgiCleanup();
        emfSchedProcess();
    }

#ifdef WEBS_SSL_SUPPORT
    websSSLClose();
#endif
#ifdef USER_MANAGEMENT_SUPPORT
    umClose();
#endif
    /*
     *	Close the socket module, report memory leaks and close the memory allocator
     */
    websCloseServer();
    socketClose();
#ifdef B_STATS
    memLeaks();
#endif
    bclose();
    return 0;
}
示例#3
0
int main(int argc, char** argv)
{
/*
 *	Hook the unload routine in
 */
   signal( SIGTERM, SigTermSignalHandler ) ;

/*
 * Initialize the memory allocator. Allow use of malloc and start 
 * with a 60K heap.  For each page request approx 8KB is allocated.
 * 60KB allows for several concurrent page requests.  If more space
 * is required, malloc will be used for the overflow.
 */
   bopen(NULL, (60 * 1024), B_USE_MALLOC);

   P( 1 ) ;

/*
 *	Switch to LONG name-space. If LONG is not loaded, WEBS will default
 *	to 8.3
 */
   SetCurrentNameSpace( 4 ) ;

/*
 * Initialize the web server
 */
   if (initWebs() < 0) {
      return -1;
   }

#ifdef WEBS_SSL_SUPPORT
   websSSLOpen();
#endif

   P( 20 ) ;

/*
 * Basic event loop. SocketReady returns true when a socket is ready for
 * service. SocketSelect will block until an event occurs. SocketProcess
 * will actually do the servicing.
 */
   while (!finished) {
      if (socketReady(-1) || socketSelect(-1, 1000)) {
         socketProcess(-1);
         ThreadSwitch() ;
      }
      websCgiCleanup();
      emfSchedProcess();
   }

   NLMcleanup() ;

   return 0;
}
示例#4
0
static void
rtems_httpd_daemon(rtems_task_argument args)
{
/*
 *	Initialize the memory allocator. Allow use of malloc and start with a 
 *	10K heap.
 */
	bopen(NULL, (10 * 1024), B_USE_MALLOC);

/*
 *	Initialize the web server
 */
	if (initWebs() < 0) {
	  rtems_panic("Unable to initialize Web server !!\n");
	}

#ifdef WEBS_SSL_SUPPORT
	websSSLOpen();
#endif

/*
 *	Basic event loop. SocketReady returns true when a socket is ready for
 *	service. SocketSelect will block until an event occurs. SocketProcess
 *	will actually do the servicing.
 */
	while (!finished) {
	  if (socketReady(-1) || socketSelect(-1, 2000)) {
			socketProcess(-1);
	  }
	  /*websCgiCleanup();*/
	  emfSchedProcess();
	}

#ifdef WEBS_SSL_SUPPORT
	websSSLClose();
#endif

#ifdef USER_MANAGEMENT_SUPPORT
	umClose();
#endif

/*
 *	Close the socket module, report memory leaks and close the memory allocator
 */
	websCloseServer();
	websDefaultClose();
	socketClose();
	symSubClose();
#if B_STATS
	memLeaks();
#endif
	bclose();
        rtems_task_delete( RTEMS_SELF );
}
void
RegisterCommand::execute()
{
	if ( state != RegisterStateGotToken || email_.isEmpty() || password_.isEmpty() || tokenString.isEmpty() ) {
		// get token first || fill information
		kDebug(14100) << "not enough info to run execute, state: " << state << " , email: " << email_ << ", password present " << !password_.isEmpty() << ", token string:" << tokenString;
		return;
	}
	session_ = gg_register3( email_.toAscii(), password_.toAscii(), tokenId.toAscii(), tokenString.toAscii(), 1 );
	if ( !session_ ) {
		error( i18n( "Gadu-Gadu" ), i18n( "Registration FAILED" ) );
		return;
	}
	state = RegisterStateWaitingForNumber;
	connect( this, SIGNAL(socketReady()), SLOT(watcher()) );
	checkSocket( session_->fd, session_->check );
}
void
RegisterCommand::requestToken()
{
	kDebug( 14100 ) << "requestToken Initialisation";
	state = RegisterStateWaitingForToken;

	if ( !( session_ = gg_token( 1 ) ) ) {
		emit error( i18n( "Gadu-Gadu" ), i18n( "Unable to retrieve token." ) );
		state = RegisterStateNoToken;
		return;
	}

	connect( this, SIGNAL(socketReady()), SLOT(watcher()) );
	checkSocket( session_->fd, session_->check );

	return;
}
/*! \brief Initializes a receiver node
 *
 *		Initializes a ROS node, a socket for receiving
 *		and ROS tf messages
 * @retval TRUE Initialization successful
 * @retval FALSE Initialization failed
 */
bool QNodeReceiver::readyForAction() {

	//return early if initialization of ROS node failed
	if (!initNode()) {
		return false;
	}

	//return early if socket setup failed
	if (!socketReady()) {
		return false;
	}

	//initialize ROS tf messages
	initMessages();

	//display a ready to receive message if node is started
	if (ros::isStarted()) {
		display(INFO, QString("Ready to receive"));
	}
	return true;
}
示例#8
0
int main(int argc, char** argv)
{
/*
 *	Initialize the memory allocator. Allow use of malloc and start 
 *	with a 60K heap.  For each page request approx 8KB is allocated.
 *	60KB allows for several concurrent page requests.  If more space
 *	is required, malloc will be used for the overflow.
 */
	bopen(NULL, (60 * 1024), B_USE_MALLOC);

/*
 *	Initialize the web server
 */
	if (initWebs() < 0) {
		return -1;
	}

/*
 *	Basic event loop. SocketReady returns true when a socket is ready for
 *	service. SocketSelect will block until an event occurs. SocketProcess
 *	will actually do the servicing.
 */
	while (!finished) {
		if (socketReady(-1) || socketSelect(-1, 2000)) {
			socketProcess(-1);
		}
		emfSchedProcess();
	}

/*
 *	Close the socket module, report memory leaks and close the memory allocator
 */
	websCloseServer();
	socketClose();
	bclose();
	return 0;
}
void
GaduCommand::forwarder()
{
	emit socketReady();
}
示例#10
0
/*
 *	Main -- entry point from LINUX
 */
int main(int argc, char** argv)
{
    int i, demo = 0;
    printf("OK open data!!!\n");
    printf("open data OK!\n");
    for (i = 0; i < argc; i++) {
        if (strcmp(argv[i], "-demo") == 0) {
			demo++;
		}
	}
/*	Initialize the memory allocator. Allow use of malloc and start 
 *	with a 60K heap.  For each page request approx 8KB is allocated.
 *	60KB allows for several concurrent page requests.  If more space
 *	is required, malloc will be used for the overflow.
 */
	bopen(NULL, (60 * 1024), B_USE_MALLOC);
	signal(SIGPIPE, SIG_IGN);
	signal(SIGINT, sigintHandler);
    signal(SIGTERM, sigintHandler);
/*
 *	Initialize the web server
 */
	if (initWebs(demo) < 0) 
    {
		return -1;
	}
    printf("Init Web service ok!\n");
#ifdef WEBS_SSL_SUPPORT
	websSSLOpen();
        /*	websRequireSSL("/"); */	/* Require all files be served via https */
#endif

        /*
         *	Basic event loop. SocketReady returns true when a socket is ready for
         *	service. SocketSelect will block until an event occurs. SocketProcess
         *	will actually do the servicing.
         */
	finished = 0;
	while (!finished)
    {
		if (socketReady(-1) || socketSelect(-1, 1000))
        {
			socketProcess(-1);
		}
        websCgiCleanup();
        emfSchedProcess();
    }
#ifdef WEBS_SSL_SUPPORT
	websSSLClose();
#endif
#ifdef USER_MANAGEMENT_SUPPORT
	umClose();
#endif
/*
 *	Close the socket module, report memory leaks and close the memory allocator
 */
	websCloseServer();
	socketClose();
#ifdef B_STATS
	memLeaks();
#endif
	bclose();
	return 0;
}
示例#11
0
/*********************************************************************************************************
** 函数名称: websStart
** 功能描述: 启动 GoAhead web 服务器
** 输 入  : addr          主机地址
**           path          web 路径
**           port          端口号
** 输 出  : 0
** 全局变量:
** 调用模块:
*********************************************************************************************************/
int websStart(char *addr, char *path, int port)
{
    /*
     *  Initialize the memory allocator. Allow use of malloc and start
     *  with a 60K heap.  For each page request approx 8KB is allocated.
     *  60KB allows for several concurrent page requests.  If more space
     *  is required, malloc will be used for the overflow.
     */
    bopen(NULL, (60 * 1024), B_USE_MALLOC);

    /*
     *  Initialize the web server
     */
    if (websInit(addr, path, port) < 0) {
        return -1;
    }

#ifdef WEBS_SSL_SUPPORT
    websSSLOpen();
#endif

    /*
     *  Basic event loop. SocketReady returns true when a socket is ready for
     *  service. SocketSelect will block for two seconds or until an event
     *  occurs. SocketProcess will actually do the servicing.
     */
    running = TRUE;
    while (!running) {
        if (socketReady(-1) || socketSelect(-1, 2000)) {
            socketProcess(-1);
        }
        websCgiCleanup();
        emfSchedProcess();
    }

#ifdef WEBS_SSL_SUPPORT
    websSSLClose();
#endif

#ifdef USER_MANAGEMENT_SUPPORT
    umClose();
#endif

    /*
     *  Close the socket module, report memory leaks and close the memory allocator
     */
    websCloseServer();
    websDefaultClose();
    socketClose();
    symSubClose();

#ifdef B_STATS
    {
        char *argv[2];
        argv[0] = "goaheadmemleak";
        argv[1] = "\0";
        memLeaks(1, argv);                                              /*  print message on stdout     */
    }
#endif

    bclose();

    if (logFile != NULL) {
        fclose(logFile);
        logFile = NULL;
    }

    return 0;
}
int _tmain(int argc, _TCHAR* argv[])
{
    int i, demo = 0;
    /*
    	for (i = 1; i < argc; i++) {
    		if (strcmp(argv[i], "-demo") == 0) {
    			demo++;
    		}
    	}
    */
    /*
     *	Initialize the memory allocator. Allow use of malloc and start
     *	with a 60K heap.  For each page request approx 8KB is allocated.
     *	60KB allows for several concurrent page requests.  If more space
     *	is required, malloc will be used for the overflow.
     */

    bopen(NULL, (60 * 1024), B_USE_MALLOC);


    /*
     *	Store the instance handle (used in socket.c)
     */

    /*
     *	Initialize the web server
     */
    if (initWebs(demo) < 0) {
        return FALSE;
    }

#ifdef WEBS_SSL_SUPPORT
    websSSLOpen();
#endif

    /*
     *	Basic event loop. SocketReady returns true when a socket is ready for
     *	service. SocketSelect will block until an event occurs. SocketProcess
     *	will actually do the servicing.
     */
    wprintf(L"begin loop\n");
    while (!finished) {
        if (socketReady(-1) || socketSelect(-1, sockServiceTime)) {
            wprintf(L"--->socketProcess\n");
            socketProcess(-1);
        }
        emfSchedProcess();
        //wprintf(L"cleanup\n");
        websCgiCleanup();
    }

#ifdef WEBS_SSL_SUPPORT
    websSSLClose();
#endif

    /*
     *	Close the User Management database
     */
#ifdef USER_MANAGEMENT_SUPPORT
    umClose();
#endif

    /*
     *	Close the socket module, report memory leaks and close the memory allocator
     */
    websCloseServer();
    socketClose();
#ifdef B_STATS
    memLeaks();
#endif
    bclose();
    return 0;
}
示例#13
0
文件: main.c 项目: codywon/bell-jpg
int APIENTRY WinMain( HINSTANCE hinstance, HINSTANCE hprevinstance,
                      char* args, int cmd_show )
{
    WPARAM	rc;
    /*
     *	Initialize the memory allocator. Allow use of malloc and start
     *	with a 60K heap.  For each page request approx 8KB is allocated.
     *	60KB allows for several concurrent page requests.  If more space
     *	is required, malloc will be used for the overflow.
     */
    bopen( NULL, ( 60 * 1024 ), B_USE_MALLOC );

    /*
     *	Store the instance handle (used in socket.c)
     */

    if ( windowsInit( hinstance ) < 0 )
    {
        return FALSE;
    }

    /*
     *	Initialize the web server
     */
    if ( initWebs() < 0 )
    {
        return FALSE;
    }

#ifdef WEBS_SSL_SUPPORT
    websSSLOpen();
#endif

    /*
     *	Basic event loop. SocketReady returns true when a socket is ready for
     *	service. SocketSelect will block until an event occurs. SocketProcess
     *	will actually do the servicing.
     */
    while ( !finished )
    {
        if ( socketReady( -1 ) || socketSelect( -1, sockServiceTime ) )
        {
            socketProcess( -1 );
        }

        emfSchedProcess();
        websCgiCleanup();

        if ( ( rc = checkWindowsMsgLoop() ) != 0 )
        {
            break;
        }
    }

#ifdef WEBS_SSL_SUPPORT
    websSSLClose();
#endif
    /*
     *	Close the User Management database
     */
#ifdef USER_MANAGEMENT_SUPPORT
    umClose();
#endif
    /*
     *	Close the socket module, report memory leaks and close the memory allocator
     */
    websCloseServer();
    socketClose();
    /*
     *	Free up Windows resources
     */
    windowsClose( hinstance );
#ifdef B_STATS
    memLeaks();
#endif
    bclose();
    return rc;
}
示例#14
0
int main(int argc, char** argv)
{
	int i, demo = 0;

	for (i = 1; i < argc; i++) 
	{
		if (strcmp(argv[i], "-demo") == 0) 
		{
			demo++;
		}
	}

	#ifdef DEBUG
		printf("demo:%d\n",demo);		//Modify by :LuiShiLi 
	#endif								//date		:2011.09.28
	

	
	//首先分配一个大的内存块(60*1024字节),以后只要是以b开头的
	//对内存操作的函数都是在这个已经分好的内存块上的操作,
	//这些操作在Balloc.c中实现。

 
	bopen(NULL, (60 * 1024), B_USE_MALLOC);
	signal(SIGPIPE, SIG_IGN);			//管道破裂,写一个没有读端口的管道
	signal(SIGINT, sigintHandler);		//按键中断
	signal(SIGTERM, sigintHandler);		//终止信号


	/*
	
	Initialize the web server
	
	初始化用户管理部分,打开web服务器,注册URL处理函数。
	
	用户管理部分在um.c中实现,
	
	Web服务器的初始化是在default.c和webs.c中实现
	
	url处理函数在handler.c中实现
	
	 */

	if (initWebs(demo) < 0) 
	{
		return -1;
	}

	
#ifdef WEBS_SSL_SUPPORT
	websSSLOpen();
/*	websRequireSSL("/"); */	/* Require all files be served via https */
#endif

/*
 *	Basic event loop. SocketReady returns true when a socket is ready for
 *	service. SocketSelect will block until an event occurs. SocketProcess
 *	will actually do the servicing.
 */

//主循环
	finished = 0;
	while (!finished) 
	{
	
		/*
		
		1,socketReady()函数检查是否有准备好的sock事件
		
		2,socketSelect()函数首先把各个sock感兴趣的事件 (sp->handlerMask)
		注册给三个集合(读,写,例外),然后调用select系统调用,然后更新各个sock
		的 sp->currentEvents,表示各个sock的当前状态。
		
		这两个函数在sockGen.c中实现,他们主要操作的数据是socket_t变量 socketList中
		的handlerMask和currentEvents,socketList在sock.c中定义并主要由该文件中的 
		socketAlloc,socketFree和socketPtr三个函数维护。
		
		*/
		if (socketReady(-1) || socketSelect(-1, 1000)) 
		{
			
			/*
			
			该函数处理具体的sock事件
			
			1,调用socketReady(sid)对socketList[sid]进行检查,看是否有sock事件
			
			2,如果有sock事件,则调用socketDoEvent()函数,对事件进行处理
			
			*/
			socketProcess(-1);
		}

		
		/*
		
		该函数在cgi.c中实现,检查cgiRec变量cgilist,首先把cgi的结果输出,如果有的话,然后看cgi进程是否已对号束,如果结束,就清理该cgi进程。
		
		Cgilist在函数websCgiHandler和websCgiCleanup中维护。




		
		*/
		websCgiCleanup();
		
		/*
		
		该函数在websuemf.c中实现,功能是检查sched_t变量sched,断开超时的连接,sched变量在emfSchedCallback和emfUnschedCallback中维护
		
		*/
		emfSchedProcess();
	}

	
	/*
	
	退出时的清理工作,永远不会执行到这里
	
	*/

#ifdef WEBS_SSL_SUPPORT
	websSSLClose();
#endif

#ifdef USER_MANAGEMENT_SUPPORT
	umClose();
#endif

/*
 *	Close the socket module, report memory leaks and close the memory allocator
 */
	websCloseServer();
	socketClose();
#ifdef B_STATS
	memLeaks();
#endif
	bclose();
	return 0;
}