summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Sustrik <sustrik@250bpm.com>2010-02-24 16:19:53 +0100
committerMartin Sustrik <sustrik@250bpm.com>2010-02-24 16:19:53 +0100
commitbe51cfa419bb6c75eb24d241769a7c5543c432a7 (patch)
tree737eddcd82406b821c6131dd3f67336f40010a52
parent0b4172b8689b60ce254c6823d69962bbdbd031d4 (diff)
parentb7f01f9071c26292c30517bac18dae92efaf3ffb (diff)
Merge branch 'master' of git@github.com:sustrik/zeromq2
-rw-r--r--builds/msvc/msvc.sln18
-rw-r--r--src/fd_signaler.cpp26
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 ()