} while (0) \
#ifdef DEBUG
-#define Dprintf(msg,...) printf("[%s]:%d" msg, __FILE__, __LINE__, ##__VA_ARGS__)
+#define Dprintf(msg,...) printf("[%s]:%d " msg, __FILE__, __LINE__, ##__VA_ARGS__)
#else
#define Dprintf(msg,...) /* do nothing */
#endif
+typedef int SOCKET;
+
// swift interface
typedef struct swift {
- int socketListener, socketData;
- struct sockaddr_in socketListenerAddr;
+ SOCKET socketListener;
+ SOCKET sendChannel;
+ SOCKET *recvChannel;
+
+ int usedChannels;
+ int maxChannels;
} *Swift;
-// swift_addr structure similar with in_addr
+/*
+ * TODO: uniform structure names
+ */
+
+// swift_addr structure similar with in_addr
struct swift_addr {
unsigned short N; // e.g. number of s_addr
unsigned long s_addr[MAX_IPs]; // i.p. ip list
// swift struct similar with sock_addr
typedef struct sockSwiftaddr {
short sin_family; // e.g. AF_INET
- unsigned short sin_port; // e.g. htons(3490)
- struct swift_addr sin_addr; // see struct swift_addr, below
+ unsigned short sin_port; // e.g. htons(3490)
+ struct swift_addr sin_addr; // see struct swift_addr, below
} *SockSwiftaddr;
// list of swift_addr
struct listsockaddr {
unsigned short N;
struct sockaddr_in sa[MAX_IPs];
-};
+};
// Function to create a Swift socket
-Swift socketSwift();
+Swift socketSwift(int maxChannels);
// Function to close a Swift socket
void closeSwift(Swift);
int bindSwift(Swift s, const struct sockSwiftaddr *my_addr, socklen_t addrlen);
// Function to receive a message
-ssize_t recvfrom(Swift s, void *buf, size_t len, int flags,
- struct sockSwiftaddr *from, socklen_t *fromlen);
-
+ssize_t recvfromSwift(Swift s, void *buf, size_t len, int flags,
+ struct sockSwiftaddr *from, socklen_t fromlen);
+
// Function to send a message
-ssize_t sendto(Swift s, const void *buf, size_t len, int flags,
- const struct sockSwiftaddr *to, socklen_t tolen);
+ssize_t sendToSwift(Swift s, const void *buf, size_t len, int flags,
+ const struct sockSwiftaddr *to, socklen_t tolen);
+
+
+// test function -- don't commit
+void transformFromAddrToSwift(struct sockSwiftaddr *ssa, struct listsockaddr lsa);
+void transformFromSwiftToAddr(struct listsockaddr *lsa, struct sockSwiftaddr ssa);
#endif