#include <sys/socket.h>
#endif
#include <iostream>
-#include <msp/strings/formatter.h>
+#include <msp/io/handle_private.h>
+#include <msp/strings/format.h>
+#include <msp/time/rawtime_private.h>
#include <msp/time/units.h>
#include "socket.h"
#ifdef WIN32
event = CreateEvent(0, false, false, 0);
+#else
+ *event = handle;
#endif
}
#ifdef WIN32
event = CreateEvent(0, false, false, 0);
+#else
+ *event = handle;
#endif
}
#endif
}
-IO::Handle Socket::get_event_handle()
+const IO::Handle &Socket::get_event_handle()
{
-#ifdef WIN32
return event;
-#else
- return handle;
-#endif
}
local_addr = addr.copy();
}
-/**
-Closes the socket. Most operations on the socket will throw an exception after
-this.
-*/
void Socket::close()
{
if(handle==MSP_NET_INVALID_SOCKET_HANDLE)
void Socket::set_timeout(const Time::TimeDelta &timeout)
{
#ifndef WIN32
- timeval tv;
- timeout.fill_timeval(tv);
+ timeval tv = Time::rawtime_to_timeval(timeout.raw());
set_option(SOL_SOCKET, SO_RCVTIMEO, &tv, sizeof(timeval));
set_option(SOL_SOCKET, SO_SNDTIMEO, &tv, sizeof(timeval));
#else