00001 #pragma once
00002 #include <winsock2.h>
00003
00004 int close(int fd);
00005 int read(int fd, void *buf, size_t count);
00006 int write(int fd, const void *buf, size_t count);
00007
00008
00009
00010 #define __STDC__ 1 // prevents io.h from dllimporting close/read/write
00011 #include <io.h>
00012
00013 struct socket_fd_pair
00014 {
00015 SOCKET socket;
00016 int fd;
00017 };
00018
00019 class SocketFromFDMaker
00020 {
00021 protected:
00022 HANDLE m_hThread;
00023 socket_fd_pair m_pair;
00024 SOCKET m_socket;
00025 bool m_wait;
00026 public:
00027 SocketFromFDMaker(int fd, LPTHREAD_START_ROUTINE lpt, bool wait_for_termination = false);
00028 ~SocketFromFDMaker();
00029 SOCKET GetSocket() { return m_socket; }
00030 };
00031
00032 DWORD WINAPI fd2socket_fwd(LPVOID lpThreadParameter);
00033 DWORD WINAPI socket2fd_fwd(LPVOID lpThreadParameter);