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); }
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); }
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); }
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); } } }
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 ); }
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); } }
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); }
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); }
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); } }
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 ); } }
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); } }
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); } }
int conn_rx_on(struct connection *conn) { conn->events |= EPOLLIN; return modify_event(conn->fd, conn->events); }
int conn_tx_off(struct connection *conn) { conn->events &= ~EPOLLOUT; return modify_event(conn->fd, conn->events); }