diff options
-rw-r--r-- | builds/msvc/msvc.sln | 18 | ||||
-rw-r--r-- | src/fd_signaler.cpp | 26 |
2 files changed, 19 insertions, 25 deletions
diff --git a/builds/msvc/msvc.sln b/builds/msvc/msvc.sln index bd33979..98a688a 100644 --- a/builds/msvc/msvc.sln +++ b/builds/msvc/msvc.sln @@ -78,16 +78,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zmq_forwarder", "zmq_forwar {641C5F36-32EE-4323-B740-992B651CF9D6} = {641C5F36-32EE-4323-B740-992B651CF9D6} EndProjectSection EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "display", "display\display.vcproj", "{1069FAF7-996A-4B76-AF88-F1D9783FF340}" - ProjectSection(ProjectDependencies) = postProject - {641C5F36-32EE-4323-B740-992B651CF9D6} = {641C5F36-32EE-4323-B740-992B651CF9D6} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "prompt", "prompt\prompt.vcproj", "{95EE421B-EBA2-4A16-8855-A978F463241E}" - ProjectSection(ProjectDependencies) = postProject - {641C5F36-32EE-4323-B740-992B651CF9D6} = {641C5F36-32EE-4323-B740-992B651CF9D6} - EndProjectSection -EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zmq_streamer", "zmq_streamer\zmq_streamer.vcproj", "{DF2CED64-4156-48EA-8AA3-38CF86060D59}" ProjectSection(ProjectDependencies) = postProject {641C5F36-32EE-4323-B740-992B651CF9D6} = {641C5F36-32EE-4323-B740-992B651CF9D6} @@ -172,14 +162,6 @@ Global {EFE471DE-6747-4B2E-B084-F7E45A16CD03}.Debug|Win32.Build.0 = Debug|Win32 {EFE471DE-6747-4B2E-B084-F7E45A16CD03}.Release|Win32.ActiveCfg = Release|Win32 {EFE471DE-6747-4B2E-B084-F7E45A16CD03}.Release|Win32.Build.0 = Release|Win32 - {1069FAF7-996A-4B76-AF88-F1D9783FF340}.Debug|Win32.ActiveCfg = Debug|Win32 - {1069FAF7-996A-4B76-AF88-F1D9783FF340}.Debug|Win32.Build.0 = Debug|Win32 - {1069FAF7-996A-4B76-AF88-F1D9783FF340}.Release|Win32.ActiveCfg = Release|Win32 - {1069FAF7-996A-4B76-AF88-F1D9783FF340}.Release|Win32.Build.0 = Release|Win32 - {95EE421B-EBA2-4A16-8855-A978F463241E}.Debug|Win32.ActiveCfg = Debug|Win32 - {95EE421B-EBA2-4A16-8855-A978F463241E}.Debug|Win32.Build.0 = Debug|Win32 - {95EE421B-EBA2-4A16-8855-A978F463241E}.Release|Win32.ActiveCfg = Release|Win32 - {95EE421B-EBA2-4A16-8855-A978F463241E}.Release|Win32.Build.0 = Release|Win32 {DF2CED64-4156-48EA-8AA3-38CF86060D59}.Debug|Win32.ActiveCfg = Debug|Win32 {DF2CED64-4156-48EA-8AA3-38CF86060D59}.Debug|Win32.Build.0 = Debug|Win32 {DF2CED64-4156-48EA-8AA3-38CF86060D59}.Release|Win32.ActiveCfg = Release|Win32 diff --git a/src/fd_signaler.cpp b/src/fd_signaler.cpp index f1ec6af..653f36d 100644 --- a/src/fd_signaler.cpp +++ b/src/fd_signaler.cpp @@ -153,9 +153,9 @@ zmq::fd_signaler_t::fd_signaler_t () wsa_assert (r != INVALID_SOCKET); // Set the read site of the pair to non-blocking mode. - //unsigned long argp = 1; - //rc = ioctlsocket (r, FIONBIO, &argp); - //wsa_assert (rc != SOCKET_ERROR); + unsigned long argp = 1; + rc = ioctlsocket (r, FIONBIO, &argp); + wsa_assert (rc != SOCKET_ERROR); // We don't need the listening socket anymore. Close it. rc = closesocket (listener); @@ -184,10 +184,22 @@ void zmq::fd_signaler_t::signal (int signal_) uint64_t zmq::fd_signaler_t::poll () { - // TODO: Can we do a blocking read on non-blocking socket? - // It's not needed as for now, so let it stay unimplemented. - zmq_assert (false); - return 0; + // Switch to blocking mode. + unsigned long argp = 0; + int rc = ioctlsocket (r, FIONBIO, &argp); + wsa_assert (rc != SOCKET_ERROR); + + // Get the signals. Given that we are in the blocking mode now, + // there should be at least a single signal returned. + uint64_t signals = check (); + zmq_assert (signals); + + // Switch back to non-blocking mode. + argp = 1; + rc = ioctlsocket (r, FIONBIO, &argp); + wsa_assert (rc != SOCKET_ERROR); + + return signals; } uint64_t zmq::fd_signaler_t::check () |