-) = delete isn't supported. Moving destructor out of scope.
-) variadic templates aren't supported. Replacing emplace_back's construction.
-) C++11's {} inline construction isn't supported. Adding temporary variables.
-) std::list<> can't work on a non-declared class. Changing to a raw pointer.
-) using dupenv_s instead of getenv_s and calling strdup ourselves.
-) few impossible-to-obtain if checks.
-) various signed/unsigned casting.
-) using time_t instead of time32_t
-) checking output of FormatMessage for failures.
-) don't redefine _WIN32_WINNT without undefining it first.
-) fixed msvc's interlocked casting.
-) renamed AddPort to AddListeningPort.
-) added protobuf's third_party includes to search path.
-) added a missing definition for inet_ntop in mingw32.
-) removed useless declarations.
If for any reason, our definition of gpr_int64 is different from the definition of google::protobuf::int64, the virtual override would fail, as this needs to be of the precisely exactly the same type.
That change allows us to use protobuf's int64 definition.
tag. This can happen if the tag is actually an integer being
typecast to void*
To avoid breaking the API of existing Next calls, I've made
a new AsyncNext method with a tri-state return that indicates
whether there is a shutdown, an actual event, or a timeout.
Still needs proper testing for the AsyncNext method specifically.