Added Win32 fixes fro non blocking io in C::E::H::Daemon
Christian Hansen [Mon, 30 May 2005 05:09:17 +0000 (05:09 +0000)]
lib/Catalyst/Engine/HTTP/Daemon.pm

index 8360d9d..8d13fe8 100644 (file)
@@ -5,6 +5,28 @@ use base 'Catalyst::Engine::HTTP::Base';
 
 use IO::Select;
 
+BEGIN {
+
+    if ( $^O eq 'MSWin32' ) {
+
+       *EINPROGRESS = sub { 10036 };
+       *EWOULDBLOCK = sub { 10035 };
+       *F_GETFL     = sub {     0 };
+       *F_SETFL     = sub {     0 };
+
+       *IO::Socket::blocking = sub {
+           my ( $self, $blocking ) = @_;
+           my $nonblocking = $blocking ? 0 : 1;
+           ioctl( $self, 0x8004667e, \$nonblocking );
+       };
+    }
+
+    else {
+        Errno->require;
+        Errno->import( qw[EWOULDBLOCK EINPROGRESS] );
+    }
+}
+
 =head1 NAME
 
 Catalyst::Engine::HTTP::Daemon - Catalyst HTTP Daemon Engine