Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
0.9
-
None
-
Windows MSVC10, MSVC11
OSX GCC-4.2
iOS Clang-4.0
-
Patch Available
Description
These are all in the C++ library. Here is a summary of what I changed.
All of these fixes make a ~5000 line patch (though a lot of that is
deleted lines).
- General cleanup of the msvc project
- Using HAVE_CONFIG_H instead of force including files
- Getting rid of some unnecessary files (stdafx.*, TargetVersion.h)
- Significant rework of windows portability. No longer using config.h
and force_inc.h to make Windows look like *nix. Instead, making lots of
Thrift specific #defines that are vaguely *nixy, and having those forward
to *nix or Windows stuff appropriately. For example, THRIFT_CTIME_R calls
ctime_r on *nix, and a wrapper thrift_ctime_r on Windows. The old
approach doesn't work when multiple libraries attempt the same trick. For
example, if openssl #defined errno to ::WSAGetLastError() as well, then
that would cause problems. - Adding preprocessor flag that can optionally squelch console output.
Default behavior is unchanged. Console output is great for home deployed
server apps, but it looks unprofessional for consumer apps. - Adding THRIFT_UNUSED_VARIABLE helper macro, to aid in squelching
warnings. - Adding redirector header for <functional> and <tr1/functional>. Since
namespaces aren't consistent (std vs std::tr1), I have added symbols to
the apache::thrift::stdcxx namespace. This is important for Clang / iOS
support - usleep and sleep on Windows were both sleeping in milliseconds. sleep
now correctly sleeps for seconds, and usleep attempts to sleep for
microseconds (after converting very coarsely to milliseconds). - Adding support for using C++11 std::thread (and mutex, and monitor).
Thrift already supported boost::thread and posix threads. Clients that
use std::thread no longer need built boost libraries. The boost headers
are sufficient for them. Switching from boost::thread to std::thread
resulted in a ~50k reduction in exe size in my tests. By default, msvc10
and below will use boost::thread, msvc11 and up will use std::thread. - Fixing more 64-bit socket truncation issues in non-blocking server and
ssl support. openssl itself has socket truncation issues, so I could not
fix them all. - Fixed
THRIFT-1692"SO_REUSEADDR allows for socket hijacking on Windows
". Now using SO_EXCLUSIVEADDRUSE on windows, and SO_REUSEADDR on *nix. - Making TFileTransport use thrift style threads instead of redoing all
the pthread+boost stuff itself. - Includes, and builds upon
THRIFT-1740(Make C++ library build on OS X
and iOS) - Moved several functions out of thrift/windows/config.h, and into other
thrift/windows headers. - Using built-in stdint.h on Windows if available (by checking HAVE_STDINT_H) and
using boost typedefs otherwise.
Attachments
Attachments
Issue Links
- depends upon
-
THRIFT-990 Sanify gettimeofday usage codebase-wide
- Closed
- is duplicated by
-
THRIFT-1938 FunctionRunner.h -- uses wrong path for Thread.h when installed
- Closed
- supercedes
-
THRIFT-2266 ThreadManager.h:24:10: fatal error: 'tr1/functional' file not found on Mac 10.9 (Mavericks)
- Closed