void event_poll::start() { looping(); std::thread loop([this](){ handle_poll(); }); loop.detach(); }
int main(int argc, char const *argv[]) { int server_fd, new_socket, valread; struct sockaddr_in address; int opt = 1; int addrlen = sizeof(address); char buffer[1024] = {0}; const char *hello = "Hello from server"; // Creating socket file descriptor if ((server_fd = socket(AF_INET, SOCK_STREAM, 0)) == 0) { perror("socket failed"); exit(EXIT_FAILURE); } // Forcefully attaching socket to the port 8080 if (setsockopt(server_fd, SOL_SOCKET, SO_REUSEADDR | SO_REUSEPORT, &opt, sizeof(opt))) { perror("setsockopt"); exit(EXIT_FAILURE); } address.sin_family = AF_INET; address.sin_addr.s_addr = INADDR_ANY; address.sin_port = htons( PORT ); // Forcefully attaching socket to the port 8080 if (bind(server_fd, (struct sockaddr *)&address, sizeof(address))<0) { perror("bind failed"); exit(EXIT_FAILURE); } if (listen(server_fd, 3) < 0) { perror("listen"); exit(EXIT_FAILURE); } handle_poll(server_fd); return 0; }
/* * The main handler for an artnet packet. calls * the appropriate handler function */ int handle(node n, artnet_packet p) { if (check_callback(n, p, n->callbacks.recv)) return 0; switch (p->type) { case ARTNET_POLL: handle_poll(n, p); break; case ARTNET_REPLY: handle_reply(n,p); break; case ARTNET_DMX: handle_dmx(n, p); break; case ARTNET_ADDRESS: handle_address(n, p); break; case ARTNET_INPUT: _artnet_handle_input(n, p); break; case ARTNET_TODREQUEST: handle_tod_request(n, p); break; case ARTNET_TODDATA: handle_tod_data(n, p); break; case ARTNET_TODCONTROL: handle_tod_control(n, p); break; case ARTNET_RDM: handle_rdm(n, p); break; case ARTNET_VIDEOSTEUP: printf("vid setup\n"); break; case ARTNET_VIDEOPALETTE: printf("video palette\n"); break; case ARTNET_VIDEODATA: printf("video data\n"); break; case ARTNET_MACMASTER: printf("mac master\n"); break; case ARTNET_MACSLAVE: printf("mac slave\n"); break; case ARTNET_FIRMWAREMASTER: handle_firmware(n, p); break; case ARTNET_FIRMWAREREPLY: handle_firmware_reply(n, p); break; case ARTNET_IPPROG : handle_ipprog(n, p); break; case ARTNET_IPREPLY: printf("ip reply\n"); break; case ARTNET_MEDIA: printf("media \n"); break; case ARTNET_MEDIAPATCH: printf("media patch\n"); break; case ARTNET_MEDIACONTROLREPLY: printf("media control reply\n"); break; default: n->state.report_code = ARTNET_RCPARSEFAIL; printf("artnet but not yet implemented!, op was %hx\n", p->type); } return 0; }