int main(int argc, char* argv[]) { HOSTS_PORTS hp; FD_ARRAY *fd; int i; if (argc < 5) { printf("usage: %s controlhost controlport datahost_1 dataport_1 [datahost_2 dataport_2 ...]\n", argv[0]); exit(10); } hp.numpairs = 0; for (i = 0; 2*i + 4 < argc ;i++) { hp.nodes[i] = argv[2*i+3]; hp.ports[i] = argv[2*i+4]; hp.numpairs++; } assert(hp.numpairs <= NUMFDS); fd = data_sockets(&hp); initial_data(fd); control_socket(fd, argv[1], argv[2]); mainloop(0, fd); for (i = 0; i < fd->numfds; i++) { close(fd->fds[i]); } close(fd->controlfd); free(fd); return 0; }
pair<double, optional<std::shared_ptr<tangent_vector> > > operator()(const double& x, const double& epsilon) const { typedef pair<double, optional<std::shared_ptr<tangent_vector> > > return_type; if (!curve_(x)) return return_type(x, optional<std::shared_ptr<tangent_vector> >()); cache_iterator_type initial_data(get_initial_data(x)); if (abs(initial_data->first - x) <= epsilon) return return_type(initial_data->first, optional<std::shared_ptr<tangent_vector> >(initial_data->second)); optional<cache_iterator_type> result(advance(*initial_data->second, initial_data->first, x)); if (result) return return_type(x, optional<std::shared_ptr<tangent_vector> >((*result)->second)); return return_type(x, optional<std::shared_ptr<tangent_vector> >()); }