#include <sys/wait.h>
#include <unistd.h>
+#include <utility>
+#include <vector>
+
#include <signal.h>
-#include <libtest/stats.h>
#include <libtest/signal.h>
#ifndef __INTEL_COMPILER
using namespace libtest;
struct socket_st {
- std::vector<int> fd;
+ typedef std::vector< std::pair< int, in_port_t> > socket_port_t;
+ socket_port_t _pair;
+
+ void release(in_port_t _arg)
+ {
+ for(socket_port_t::iterator iter= _pair.begin();
+ iter != _pair.end();
+ iter++)
+ {
+ if ((*iter).second == _arg)
+ {
+ shutdown((*iter).first, SHUT_RDWR);
+ close((*iter).first);
+ }
+ }
+ }
~socket_st()
{
- for(std::vector<int>::iterator iter= fd.begin(); iter != fd.end(); iter++)
+ for(socket_port_t::iterator iter= _pair.begin();
+ iter != _pair.end();
+ iter++)
{
- close(*iter);
+ shutdown((*iter).first, SHUT_RDWR);
+ close((*iter).first);
}
}
};
return global_port;
}
+void release_port(in_port_t arg)
+{
+ all_socket_fd.release(arg);
+}
+
in_port_t get_free_port()
{
in_port_t ret_port= in_port_t(0);
}
}
- all_socket_fd.fd.push_back(sd);
+ all_socket_fd._pair.push_back(std::make_pair(sd, ret_port));
}
if (ret_port > 1024)