First step for using multiple recvs from mptp.
[swifty.git] / src / libswift / swift.h
index 2a9f68a..723cf15 100644 (file)
@@ -108,6 +108,11 @@ namespace swift {
        Address() {
            clear();
        }
+       Address(const Address &b) {
+           clear();
+               addr->dests[0].addr = b.addr->dests[0].addr;
+               addr->dests[0].port = b.addr->dests[0].port;
+       }
        Address(const char* ip, uint16_t port)  {
            clear();
            set_ipv4(ip);
@@ -134,6 +139,15 @@ namespace swift {
        }
        uint32_t ipv4 () const { return ntohl(addr->dests[0].addr); }
        uint16_t port () const { return ntohs(addr->dests[0].port); }
+       Address& operator = (const Address& b) {
+               if (this != &b) {
+                       free(addr);
+                       clear();
+                       addr->dests[0].addr = b.addr->dests[0].addr;
+                       addr->dests[0].port = b.addr->dests[0].port;
+               }
+               return *this;
+       }
        bool operator == (const Address& b) const {
            return addr->count == b.addr->count &&
                addr->dests[0].port==b.addr->dests[0].port &&
@@ -480,8 +494,8 @@ namespace swift {
         static void LibeventSendCallback(int fd, short event, void *arg);
         static void LibeventReceiveCallback(int fd, short event, void *arg);
         static void RecvDatagram (evutil_socket_t socket); // Called by LibeventReceiveCallback
-           static int RecvFrom(evutil_socket_t sock, Address& addr, struct evbuffer *evb); // Called by RecvDatagram
-           static int SendTo(evutil_socket_t sock, const Address& addr, struct evbuffer *evb); // Called by Channel::Send()
+           static int RecvFrom(evutil_socket_t sock, Address& addr, struct evbuffer **evb); // Called by RecvDatagram
+           static int SendTo(evutil_socket_t sock, const Address& addr, struct evbuffer **evb); // Called by Channel::Send()
            static evutil_socket_t Bind(Address address, sckrwecb_t callbacks=sckrwecb_t());
            static Address BoundAddress(evutil_socket_t sock);
            static evutil_socket_t default_socket()