예제 #1
0
파일: acrdnet.c 프로젝트: briancline/accord
static void client_tx_off(struct client_info *ci)
{
	pthread_mutex_lock(&event_lock);
	ci->events &= ~EPOLLOUT;
	modify_event(ci->fd, ci->events);
	pthread_mutex_unlock(&event_lock);
}
예제 #2
0
파일: acrdnet.c 프로젝트: briancline/accord
static void client_rx_on(struct client_info *ci)
{
	pthread_mutex_lock(&event_lock);
	ci->events |= EPOLLIN;
	modify_event(ci->fd, ci->events);
	pthread_mutex_unlock(&event_lock);
}
예제 #3
0
파일: epoll.cpp 프로젝트: uniqxh/socket
void do_write(int epollfd, int fd, char* buf){
	int nwrite;
	nwrite = write(fd, buf , strlen(buf));
	if(nwrite == -1){
		perror("write error:");
		close(fd);
		delete_event(epollfd, fd, EPOLLOUT);
	}else
		modify_event(epollfd, fd, EPOLLIN);
	memset(buf, 0, MAXSIZE);
}
예제 #4
0
static void do_write(int epollfd, int fd, int sockfd, char *buf)
{
    int nwrite;
    nwrite = write(fd, buf, strlen(buf));
    if(nwrite == -1){
        ERR_EXIT("write error");
    }else{
        if(fd == STDIN_FILENO){
            delete_event(epollfd, sockfd, EPOLLOUT);
        }else{
            modify_event(epollfd, fd, EPOLLIN);
        }
    }
}
예제 #5
0
static void do_write( int _epollfd, int _fd, char* _buf )
{
	int nwrite = ::write( _fd, _buf, strlen(_buf) );
	if( nwrite == -1 )
	{
		perror( "write error:" );
		::close( _fd );
		delete_event( _epollfd, _fd, EPOLLOUT );
	}
	else
	{
		modify_event( _epollfd, _fd, EPOLLOUT );
	}
	::memset( _buf, 0, MAXSIZE );
}
예제 #6
0
파일: epoll.cpp 프로젝트: uniqxh/socket
void do_read(int epollfd, int fd, char* buf){
	int nread;
	nread = read(fd, buf, MAXSIZE);
	if(nread == -1){
		perror("read error:");
		close(fd);
		delete_event(epollfd, fd, EPOLLIN);
	}else if(nread == 0){
		fprintf(stderr, "client close.\n");
		close(fd);
		delete_event(epollfd, fd, EPOLLIN);
	}else{
		printf("read message is : %s", buf);
		modify_event(epollfd, fd, EPOLLOUT);
	}
}
예제 #7
0
static void do_write(int epollfd,int fd,char *buf)
{
    int nwrite;
    nwrite = write(fd,buf,strlen(buf));
    if (nwrite == -1)
    {
        perror("write error:");
        close(fd);
        delete_event(epollfd,fd,EPOLLOUT);
    }
    else 
    {
        fprintf(stdout, "do_write: modify_event(epollfd,fd,EPOLLIN), fd:%d\n", fd);
        modify_event(epollfd,fd,EPOLLIN);
    }
    memset(buf,0,MAXSIZE);
}
예제 #8
0
static void do_write(int epollfd,int fd,int sockfd,char *buf)
{
    int nwrite;
    nwrite = write(fd,buf,strlen(buf));
    if (nwrite == -1)
    {
        perror("write error:");
        close(fd);
    }
    else
    {
        if (fd == STDOUT_FILENO)
            delete_event(epollfd,fd,EPOLLOUT);
        else
            modify_event(epollfd,fd,EPOLLIN);
    }
    memset(buf,0,MAXSIZE);
}
예제 #9
0
static void do_read(int epollfd, int fd, char *buf)
{
        int     nread;
        nread = read(fd, buf, MAXSIZE);
        if (nread == -1) {
                perror("read error: ");
                close(fd);
                delete_event(epollfd, fd, EPOLLIN);
        } else if (nread == 0) {
                fprintf(stderr, "client close.\n");
                close(fd);
                delete_event(epollfd, fd, EPOLLIN);
        } else {
                buf[strlen(buf)] = '\0';
                printf("read message is : %s", buf);
                /* 修改描述符对应的事件,由读改为写 */
                modify_event(epollfd, fd, EPOLLOUT);
        }
}
예제 #10
0
static void do_read( int _epollfd, int _fd, char* _buf )
{
	int nread = ::read( _fd, _buf, MAXSIZE );
	if( nread == -1 )
	{
		perror( "read error:" );
		::close( _fd );
		delete_event( _epollfd, _fd, EPOLLIN );
	}
	else if( nread == 0 )
	{
		fprintf( stderr, "client close.\n" );
		::close( _fd );
		delete_event( _epollfd, _fd, EPOLLIN );
	}
	else
	{
		printf( "read message is : %s", _buf );
		modify_event( _epollfd, _fd, EPOLLIN );
	}
}
예제 #11
0
void do_read(int epollfd,int fd,char *buf)
{
    int nread;
    int size;
    nread = read(fd,&size,4);
    if (nread == -1)
    {
        perror("read error:");
        close(fd);
        delete_event(epollfd,fd,EPOLLIN);
    }
    else if (nread == 0)
    {
        fprintf(stderr,"client close.\n");
        close(fd);
        delete_event(epollfd,fd,EPOLLIN);
    }
    else
    {
        recvFromClient(fd,size);
        //修改描述符对应的事件,由读改为写
        modify_event(epollfd,fd,EPOLLOUT);
    }
}
예제 #12
0
static void do_read(int epollfd,int fd,char *buf)
{
    int nread;
    nread = read(fd,buf,MAXSIZE);
    if (nread == -1)
    {
        perror("read error:");
        close(fd);
        delete_event(epollfd,fd,EPOLLIN);
    }
    else if (nread == 0)
    {
        fprintf(stderr,"client close, fd:%d\n", fd);
        close(fd);
        delete_event(epollfd,fd,EPOLLIN);
    }
    else
    {
        printf("read message is : %s",buf);
        //修改描述符对应的事件,由读改为写
        fprintf(stdout, "do_read: modify_event(epollfd,fd,EPOLLOUT), fd:%d\n", fd);
        modify_event(epollfd,fd,EPOLLOUT);
    }
}
예제 #13
0
int conn_rx_on(struct connection *conn)
{
	conn->events |= EPOLLIN;

	return modify_event(conn->fd, conn->events);
}
예제 #14
0
int conn_tx_off(struct connection *conn)
{
	conn->events &= ~EPOLLOUT;

	return modify_event(conn->fd, conn->events);
}