Changeset 89

Show
Ignore:
Timestamp:
06/21/10 00:06:20 (2 years ago)
Author:
Chris Miller
Message:

Default DflSocket? for Tango is tango.net.device.Socket.Socket (Conduit), but no ServerSocket? support yet

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/win32/dfl/socket.d

    r88 r89  
    1111    version(DFL_TangoNetDeviceBerkeley) 
    1212    { 
    13         version = _DFL_TangoHasBerkeleySocket; 
     13        version = _DFL_TangoBerkeleySocket; 
    1414    } 
    1515    else version(Old) 
     
    1919    else 
    2020    { 
    21         // Tango's socket conduit not supported yet. 
    22         version = DFL_NoSocket; 
     21        version = _DFL_TangoSocketConduit; 
    2322    } 
    2423} 
     
    4443    { 
    4544         
    46         version(_DFL_TangoHasBerkeleySocket) 
     45        version(_DFL_TangoBerkeleySocket) 
    4746        { 
    4847            private import std.intrinsic; 
     
    7069            } 
    7170        } 
     71        else version(_DFL_TangoSocketConduit) 
     72        { 
     73            private import std.intrinsic; 
     74            private import tango.net.device.Socket; 
     75            private import tango.net.device.Berkeley; 
     76             
     77            alias NetHost DInternetHost; 
     78            alias IPv4Address DInternetAddress; 
     79             
     80            socket_t getSocketHandle(DflSocket sock) 
     81            { 
     82                return sock.native.handle; 
     83            } 
     84        } 
    7285         
    7386    } 
     
    89102version(Tango) 
    90103{ 
    91     version(_DFL_TangoHasBerkeleySocket) 
     104    version(_DFL_TangoBerkeleySocket) 
    92105    { 
    93106        class DflSocket /// 
     
    267280         
    268281        alias tango.net.Socket.Socket DflSocket; /// 
     282         
     283    } 
     284    else version(_DFL_TangoSocketConduit) 
     285    { 
     286         
     287        alias tango.net.device.Socket.Socket DflSocket; /// 
    269288         
    270289    } 
     
    332351        _init(); 
    333352     
    334     sock.blocking = false; // So the getter will be correct. 
     353    version(Tango) 
     354    { 
     355        version(_DFL_TangoBerkeleySocket) 
     356        { 
     357            sock.blocking = false; // So the getter will be correct. 
     358        } 
     359        else version(_DFL_TangoHasOldSocket) 
     360        { 
     361            sock.blocking = false; // So the getter will be correct. 
     362        } 
     363    } 
     364    else 
     365    { 
     366        sock.blocking = false; // So the getter will be correct. 
     367    } 
    335368     
    336369    // SOCKET_ERROR 
     
    362395    { 
    363396        super(af, type, protocol); 
    364         super.blocking = false; 
     397        version(_DFL_TangoSocketConduit) 
     398        { 
     399            this.native.blocking = false; 
     400        } 
     401        else 
     402        { 
     403            super.blocking = false; 
     404        } 
    365405    } 
    366406     
    367407    version(Tango) 
    368408    { 
     409        version(_DFL_TangoSocketConduit) 
     410        { 
     411             
     412            this() 
     413            { 
     414                super(); 
     415                this.native.blocking = false; 
     416            } 
     417             
     418        } 
    369419    } 
    370420    else 
     
    385435    } 
    386436     
    387     /// ditto 
    388     // For use with accept(). 
    389     protected this() 
    390     { 
     437    version(_DFL_TangoSocketConduit) 
     438    { 
     439    } 
     440    else 
     441    { 
     442        /// ditto 
     443        // For use with accept(). 
     444        protected this() 
     445        { 
     446        } 
    391447    } 
    392448     
     
    401457    version(Tango) 
    402458    { 
    403         version(_DFL_TangoHasBerkeleySocket) 
     459        version(_DFL_TangoBerkeleySocket) 
    404460        { 
    405461            override DflSocket accept() 
     
    441497     
    442498     
    443     override bool blocking() // getter 
    444     { 
    445         return false; 
    446     } 
    447      
    448      
    449     override void blocking(bool byes) // setter 
    450     { 
    451         if(byes) 
    452             assert(0); 
    453     } 
     499    version(_DFL_TangoSocketConduit) 
     500    { 
     501    } 
     502    else 
     503    { 
     504        override bool blocking() // getter 
     505        { 
     506            return false; 
     507        } 
     508         
     509         
     510        override void blocking(bool byes) // setter 
     511        { 
     512            if(byes) 
     513                assert(0); 
     514        } 
     515    } 
     516     
    454517} 
    455518 
     
    785848                st = buf.length; 
    786849             
    787             st = sock.send(buf[0 .. st]); 
     850            version(_DFL_TangoSocketConduit) 
     851            { 
     852                st = sock.write(buf[0 .. st]); 
     853            } 
     854            else 
     855            { 
     856                st = sock.send(buf[0 .. st]); 
     857            } 
    788858            if(st > 0) 
    789859            { 
     
    856926            readbuf.length = readbuf.length + 2048; 
    857927         
    858         int rd = sock.receive(readbuf[rpos .. readbuf.length]); 
     928        version(_DFL_TangoSocketConduit) 
     929        { 
     930            int rd = sock.read(readbuf[rpos .. readbuf.length]); 
     931        } 
     932        else 
     933        { 
     934            int rd = sock.receive(readbuf[rpos .. readbuf.length]); 
     935        } 
    859936        if(rd > 0) 
    860937            rpos += cast(uint)rd; 
     
    875952                buf = writebuf; 
    876953             
    877             int st = sock.send(buf); 
     954            version(_DFL_TangoSocketConduit) 
     955            { 
     956                int st = sock.write(buf); 
     957            } 
     958            else 
     959            { 
     960                int st = sock.send(buf); 
     961            } 
    878962            if(st > 0) 
    879963                writebuf = writebuf[st .. writebuf.length];