Merge branch 'master' of github.com:zeromq/libzmq

This commit is contained in:
Martin Sustrik 2011-06-19 09:15:06 +02:00
commit 4b60023b96
5 changed files with 143 additions and 44 deletions

View File

@ -28,7 +28,7 @@ extern "C" {
#include <errno.h> #include <errno.h>
#include <stddef.h> #include <stddef.h>
#if defined _WIN32 #if defined _WIN32
#include "winsock2.h" #include <winsock2.h>
#endif #endif
/* Handle DSO symbol visibility */ /* Handle DSO symbol visibility */

View File

@ -18,24 +18,24 @@
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
#include "platform.hpp"
#if defined ZMQ_HAVE_WINDOWS
#include "windows.hpp"
#else
#include <unistd.h>
#endif
#include <new> #include <new>
#include <string.h> #include <string.h>
#include "ctx.hpp" #include "ctx.hpp"
#include "socket_base.hpp" #include "socket_base.hpp"
#include "io_thread.hpp" #include "io_thread.hpp"
#include "platform.hpp"
#include "reaper.hpp" #include "reaper.hpp"
#include "pipe.hpp" #include "pipe.hpp"
#include "err.hpp" #include "err.hpp"
#include "msg.hpp" #include "msg.hpp"
#if defined ZMQ_HAVE_WINDOWS
#include "windows.h"
#else
#include "unistd.h"
#endif
zmq::ctx_t::ctx_t (uint32_t io_threads_) : zmq::ctx_t::ctx_t (uint32_t io_threads_) :
tag (0xbadcafe0), tag (0xbadcafe0),
terminating (false) terminating (false)

View File

@ -19,12 +19,8 @@
*/ */
#include "platform.hpp" #include "platform.hpp"
#if defined ZMQ_HAVE_WINDOWS
#include <string.h> #include "windows.hpp"
#include <algorithm>
#ifdef ZMQ_HAVE_WINDOWS
#include "winsock2.h"
#elif defined ZMQ_HAVE_HPUX #elif defined ZMQ_HAVE_HPUX
#include <sys/param.h> #include <sys/param.h>
#include <sys/types.h> #include <sys/types.h>
@ -36,6 +32,9 @@
#include <sys/select.h> #include <sys/select.h>
#endif #endif
#include <string.h>
#include <algorithm>
#include "select.hpp" #include "select.hpp"
#include "err.hpp" #include "err.hpp"
#include "config.hpp" #include "config.hpp"

View File

@ -295,7 +295,8 @@ zmq::fd_t zmq::tcp_connecter_t::connect ()
// Networking problems are OK. No need to assert. // Networking problems are OK. No need to assert.
errno = err; errno = err;
errno_assert (errno == ECONNREFUSED || errno == ECONNRESET || errno_assert (errno == ECONNREFUSED || errno == ECONNRESET ||
errno == ETIMEDOUT || errno == EHOSTUNREACH); errno == ETIMEDOUT || errno == EHOSTUNREACH ||
errno == ENETUNREACH);
return retired_fd; return retired_fd;
} }

View File

@ -21,58 +21,157 @@
#ifndef __ZMQ_WINDOWS_HPP_INCLUDED__ #ifndef __ZMQ_WINDOWS_HPP_INCLUDED__
#define __ZMQ_WINDOWS_HPP_INCLUDED__ #define __ZMQ_WINDOWS_HPP_INCLUDED__
// The purpose of this header file is to turn on only the items actually needed // The purpose of this header file is to turn on only the items actually
// on the windows platform. // needed on the windows platform.
#define _WINSOCKAPI_ // Disable deprecation warnings.
#ifndef NOMINMAX
#define NOMINMAX // No min and max functions, these clash with C++.
#endif
#define _CRT_SECURE_NO_WARNINGS #define _CRT_SECURE_NO_WARNINGS
#ifndef WIN32_LEAN_AND_MEAN #ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN
#endif #endif
#ifndef NOUSER // No USER defines and routines. #ifndef NOGDICAPMASKS
#define NOUSER #define NOGDICAPMASKS // CC_*, LC_*, PC_*, CP_*, TC_*, RC_
#endif #endif
#ifndef NOMCX // No Modem Configuration Extensions. #ifndef NOVIRTUALKEYCODES
#define NOMCX #define NOVIRTUALKEYCODES // VK_*
#endif #endif
#ifndef NOIME // No Input Method Editor. #ifndef NOWINMESSAGES
#define NOIME #define NOWINMESSAGES // WM_*, EM_*, LB_*, CB_*
#endif #endif
#ifndef NOSOUND // No Sound driver routines. #ifndef NOWINSTYLES
#define NOSOUND #define NOWINSTYLES // WS_*, CS_*, ES_*, LBS_*, SBS_*, CBS_*
#endif
#ifndef NOSYSMETRICS
#define NOSYSMETRICS // SM_*
#endif
#ifndef NOMENUS
#define NOMENUS // MF_*
#endif
#ifndef NOICONS
#define NOICONS // IDI_*
#endif
#ifndef NOKEYSTATES
#define NOKEYSTATES // MK_*
#endif
#ifndef NOSYSCOMMANDS
#define NOSYSCOMMANDS // SC_*
#endif
#ifndef NORASTEROPS
#define NORASTEROPS // Binary and Tertiary raster ops
#endif
#ifndef NOSHOWWINDOW
#define NOSHOWWINDOW // SW_*
#endif
#ifndef OEMRESOURCE
#define OEMRESOURCE // OEM Resource values
#endif
#ifndef NOATOM
#define NOATOM // Atom Manager routines
#endif
#ifndef NOCLIPBOARD
#define NOCLIPBOARD // Clipboard routines
#endif
#ifndef NOCOLOR
#define NOCOLOR // Screen colors
#endif
#ifndef NOCTLMGR
#define NOCTLMGR // Control and Dialog routines
#endif
#ifndef NODRAWTEXT
#define NODRAWTEXT // DrawText() and DT_*
#endif
#ifndef NOGDI
#define NOGDI // All GDI defines and routines
#endif
#ifndef NOKERNEL
#define NOKERNEL // All KERNEL defines and routines
#endif
#ifndef NOUSER
#define NOUSER // All USER defines and routines
#endif
#ifndef NONLS
#define NONLS // All NLS defines and routines
#endif
#ifndef NOMB
#define NOMB // MB_* and MessageBox()
#endif
#ifndef NOMEMMGR
#define NOMEMMGR // GMEM_*, LMEM_*, GHND, LHND, associated routines
#endif
#ifndef NOMETAFILE
#define NOMETAFILE // typedef METAFILEPICT
#endif
#ifndef NOMINMAX
#define NOMINMAX // Macros min(a,b) and max(a,b)
#endif
#ifndef NOMSG
#define NOMSG // typedef MSG and associated routines
#endif
#ifndef NOOPENFILE
#define NOOPENFILE // OpenFile(), OemToAnsi, AnsiToOem, and OF_*
#endif
#ifndef NOSCROLL
#define NOSCROLL // SB_* and scrolling routines
#endif
#ifndef NOSERVICE
#define NOSERVICE // All Service Controller routines, SERVICE_ equates, etc.
#endif
#ifndef NOSOUND
#define NOSOUND // Sound driver routines
#endif
#ifndef NOTEXTMETRIC
#define NOTEXTMETRIC // typedef TEXTMETRIC and associated routines
#endif
#ifndef NOWH
#define NOWH // SetWindowsHook and WH_*
#endif
#ifndef NOWINOFFSETS
#define NOWINOFFSETS // GWL_*, GCL_*, associated routines
#endif
#ifndef NOCOMM
#define NOCOMM // COMM driver routines
#endif
#ifndef NOKANJI
#define NOKANJI // Kanji support stuff.
#endif
#ifndef NOHELP
#define NOHELP // Help engine interface.
#endif
#ifndef NOPROFILER
#define NOPROFILER // Profiler interface.
#endif
#ifndef NODEFERWINDOWPOS
#define NODEFERWINDOWPOS // DeferWindowPos routines
#endif
#ifndef NOMCX
#define NOMCX // Modem Configuration ExtensionsA
#endif #endif
#ifdef ZMQ_HAVE_MINGW32 // Set target version to Windows Server 2003, Windows XP/SP1 or higher.
#ifdef WINVER #ifndef _WIN32_WINNT
#undef WINVER #define _WIN32_WINNT 0x0501
#endif
#define WINVER 0x0501
#endif #endif
#include <windows.h> #include <windows.h>
// MSVC++ 2005 on Win2000 does not define _WIN32_WINNT. #ifdef __MINGW32__
#ifndef _WIN32_WINNT // Require Windows XP or higher with MinGW for getaddrinfo().
#define _WIN32_WINNT WINVER #if(_WIN32_WINNT >= 0x0501)
#else
#undef _WIN32_WINNT
#define _WIN32_WINNT 0x0501
#endif #endif
#endif
// Enable winsock (not included when WIN32_LEAN_AND_MEAN is defined).
#if(_WIN32_WINNT >= 0x0400)
#include <winsock2.h> #include <winsock2.h>
#include <mswsock.h> #include <mswsock.h>
#else
#include <winsock.h>
#endif
#include <ws2tcpip.h> #include <ws2tcpip.h>
#include <ipexport.h> #include <ipexport.h>
#include <process.h> #include <process.h>
// On mingw environment AI_NUMERICSERV is not defined, needed in ip.cpp. // In MinGW environment AI_NUMERICSERV is not defined.
#ifndef AI_NUMERICSERV #ifndef AI_NUMERICSERV
#define AI_NUMERICSERV 0x0400 #define AI_NUMERICSERV 0x0400
#endif #endif