예제 #1
0
파일: send.c 프로젝트: matildah/mimocat
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> >());
 }