]> gitweb.factorcode.org Git - factor.git/commitdiff
make a win32-stream tuple that makes more sense. next step: no win32-stream-this
authorerg <erg@trifocus.net>
Mon, 4 Sep 2006 23:05:06 +0000 (23:05 +0000)
committererg <erg@trifocus.net>
Mon, 4 Sep 2006 23:05:06 +0000 (23:05 +0000)
library/io/windows/server.factor
library/io/windows/stream.factor

index e86fb15b9b9f90a8f73f410f8fbb479034d85b5d..2441f5697b25753980741b6bcf2fefa1130a5602 100644 (file)
@@ -92,12 +92,12 @@ IN: io
             buffer-ptr <alien> 0 32 32 f r> AcceptEx
             handle-socket-error!=0/f stop
         ] callcc1 pending-error drop
-        swap dup add-completion <win32-stream> <line-reader> 
+        swap dup add-completion make-win32-stream <line-reader> 
         dupd <win32-client-stream> swap buffer-free
     ] bind ;
 
 : <client> ( host port -- stream )
     client-sockaddr new-socket
     [ swap "sockaddr-in" c-size connect handle-socket-error!=0/f ] keep 
-    dup add-completion <win32-stream> <line-reader> ;
+    dup add-completion make-win32-stream <line-reader> ;
 
index 73b05ffb838ba60ce94275eb8474f7457b760638..815a63ee6c93b453961277d558dfce84656fb5fb 100644 (file)
@@ -1,24 +1,26 @@
 ! Copyright (C) 2004, 2005 Mackenzie Straight.
 
 IN: win32-stream
-USING: alien generic io-internals kernel
+USING: alien generic hashtables io-internals kernel
 kernel-internals math namespaces prettyprint sequences
 io strings threads win32-api win32-io-internals ;
 
-TUPLE: win32-stream this ; ! FIXME: rewrite using tuples
-GENERIC: win32-stream-handle
-GENERIC: do-write
-! TUPLE: win32-stream handle in-buffer out-buffer fileptr file-size stream timeout cutoff ;
+TUPLE: win32-stream handle in-buffer out-buffer fileptr file-size timeout cutoff this ;
+SYMBOL: stream
+
 
 SYMBOL: handle
 SYMBOL: in-buffer
 SYMBOL: out-buffer
 SYMBOL: fileptr
 SYMBOL: file-size
-SYMBOL: stream
 SYMBOL: timeout
 SYMBOL: cutoff
 
+
+GENERIC: win32-stream-handle
+GENERIC: do-write
+
 : pending-error ( len/status -- len/status )
     dup [ win32-throw-error ] unless ;
 
@@ -98,6 +100,7 @@ M: string do-write
     1 in-buffer get buffer-first-n ;
 
 M: win32-stream stream-write
+    
     win32-stream-this [ do-write ] bind ;
 
 M: win32-stream stream-write1
@@ -145,8 +148,9 @@ M: win32-stream expire
 M: win32-stream with-nested-stream
     win32-stream-this [ drop stream get swap with-stream* ] bind ;
 
-C: win32-stream ( handle -- stream )
-    swap [
+SYMBOL: the-hash
+: make-win32-stream ( handle -- stream )
+    [
         dup f GetFileSize dup -1 = not [
             file-size set
         ] [ drop f file-size set ] if
@@ -154,14 +158,19 @@ C: win32-stream ( handle -- stream )
         4096 <buffer> in-buffer set 
         4096 <buffer> out-buffer set
         0 fileptr set 
-        dup stream set
-    ] make-hash over set-win32-stream-this ;
-
-! TUPLE: win32-stream handle in-buffer out-buffer fileptr file-size stream timeout cutoff ;
+    ] make-hash
+    the-hash set
+    handle the-hash get hash
+    in-buffer the-hash get hash
+    out-buffer the-hash get hash
+    fileptr the-hash get hash
+    file-size the-hash get hash
+    f 0 the-hash get
+    <win32-stream> dup stream set ;
 
 : <win32-file-reader> ( path -- stream )
-    t f win32-open-file <win32-stream> <line-reader> ;
+    t f win32-open-file make-win32-stream <line-reader> ;
 
 : <win32-file-writer> ( path -- stream )
-    f t win32-open-file <win32-stream> ;
+    f t win32-open-file make-win32-stream ;