#ifndef __SEND_FUNCTOR_H__
#define __SEND_FUNCTOR_H__
-#include <sys/types.h>
-#include <sys/socket.h>
+#include "stg/os_int.h"
#include <functional>
-#include "os_int.h"
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <netinet/ip.h>
-class PacketSender : public std::unary_function<uint32_t, void> {
+class PacketSender : public std::unary_function<uint32_t, ssize_t> {
public:
- PacketSender(int s, char * b, int l, uint16_t p)
+ PacketSender(int s, char * b, size_t l, uint16_t p)
: sock(s),
buffer(b),
length(l),
- port(p) {};
- void operator() (uint32_t ip)
+ port(p) {}
+ ssize_t operator() (uint32_t ip)
{
- int res;
struct sockaddr_in sendAddr;
sendAddr.sin_family = AF_INET;
sendAddr.sin_port = port;
sendAddr.sin_addr.s_addr = ip;
- res = sendto(sock, buffer, length, 0, (struct sockaddr*)&sendAddr, sizeof(sendAddr));
+ return sendto(sock, buffer, length, 0, (struct sockaddr*)&sendAddr, sizeof(sendAddr));
}
private:
int sock;
char * buffer;
- int length;
+ size_t length;
uint16_t port;
};