Exemplo n.º 1
0
  std::unique_ptr<ElVis::Serialization::Camera> Camera::Serialize() const
  {
    auto pResult = std::unique_ptr<ElVis::Serialization::Camera>(new ElVis::Serialization::Camera());
    pResult->set_field_of_view(m_fieldOfView);
    pResult->set_aspect_ratio(m_aspectRatio);
    pResult->set_near(m_near);
    pResult->set_far(m_far);
    pResult->set_allocated_eye(m_eye.Serialize().release());
    pResult->set_allocated_lookat(m_lookAt.Serialize().release());
    pResult->set_allocated_up(m_up.Serialize().release());
    pResult->set_allocated_u(m_u.Serialize().release());
    pResult->set_allocated_v(m_v.Serialize().release());
    pResult->set_allocated_w(m_w.Serialize().release());

    return pResult;
  }
Exemplo n.º 2
0
int close_conn(int sock) {
	
	if (close(sock) < 0) {
		perror("close_conn error - close failed");
		return -1;
	}

	fd_remove(sock);

	if (delete_near(sock) < 0) {
		fprintf(stderr, "close_conn error - socket not found in near list\n");
		return -1;
	}

	set_near();
	nsock --;

	return 0;

}
Exemplo n.º 3
0
int accept_conn(int tcp_list) {
	int j, rc;
	int sock_tmp;
	int nread;
	unsigned short port;
	struct sockaddr_in *addr_list;
	struct sockaddr_in addr;
	unsigned int len = sizeof(struct sockaddr_in);
	struct packet send_pck;

	if ((sock_tmp = accept(tcp_list, (struct sockaddr*)&addr, &len)) < 0) {
		perror("accept_conn error - accept failed");
		return -1;
	}
	if (nsock >= max_tcp_sock) {
		printf("accept_conn - can't accept more connection %s:%u\n", inet_ntoa(addr.sin_addr), ntohs(addr.sin_port));
		new_err_packet(&send_pck, 0);
		if (send_packet_tcp(sock_tmp, &send_pck) < 0) {
			perror("bad write");
			return -1;
		}
		if (close(sock_tmp) < 0) {
			perror("accept_conn error - close failed");
			return -1;
		}
		return 0;
	}
	new_ack_packet(&send_pck, 0);
	if (send_packet_tcp(sock_tmp, &send_pck) < 0) {
		perror("bad write");
		return -1;
	}

	if ((nread = read(sock_tmp, (char *)&port, sizeof(port))) != sizeof(port)) {
		if (nread < 0) {
			perror("accept_conn error - read failed");
		} else {
			fprintf(stderr, "accept_conn error - bad packet format\n");
		}
		return -1;
	}

	printf("connessione accettata da %s:%d\n", inet_ntoa(addr.sin_addr), ntohs(addr.sin_port));

	fd_add(sock_tmp);
	addr.sin_port = port;

	if ((rc = pthread_mutex_lock(&NEAR_LIST_LOCK)) != 0) {
		fprintf(stderr, "accept_conn error - can't acquire lock: %s\n", strerror(rc));
		return -1;
	}
	if (insert_near(sock_tmp, &addr) < 0) {
		fprintf(stderr, "join_overlay error - insert_near failed\n");
		return -1;
	}

	set_near();
	printf("accept_conn setto la stringa dei vicini\n");
	if ((rc = pthread_mutex_unlock(&NEAR_LIST_LOCK)) != 0) {
		fprintf(stderr, "accept_conn error - can't release lock: %s\n", strerror(rc));
		return -1;
	}

	addr_list = str_to_addr(near_str, max_tcp_sock);
	for(j = 0 ; j < max_tcp_sock; j ++){
		printf("accept - near %s:%d\n", inet_ntoa(addr_list[j].sin_addr), ntohs(addr_list[j].sin_port));
	}
	nsock ++;

	return 0;
}