]> granicus.if.org Git - php/commitdiff
Differentiate between write buffer and streams read buffer sizes.
authorWez Furlong <wez@php.net>
Sat, 28 Sep 2002 22:10:47 +0000 (22:10 +0000)
committerWez Furlong <wez@php.net>
Sat, 28 Sep 2002 22:10:47 +0000 (22:10 +0000)
Add options for timeout and chunk size; previously these were only
set-able for socket streams.

main/php_streams.h
main/streams.c

index fb260a713064a5b55ed5c531d476c6a5b9a99c39..3ae9455bc24b9e2d60f70b41c29ed75c2ccacfad 100755 (executable)
@@ -374,17 +374,24 @@ PHPAPI php_stream_dirent *_php_stream_readdir(php_stream *dirstream, php_stream_
 PHPAPI int _php_stream_set_option(php_stream *stream, int option, int value, void *ptrparam TSRMLS_DC);
 #define php_stream_set_option(stream, option, value, ptrvalue) _php_stream_set_option((stream), (option), (value), (ptrvalue) TSRMLS_CC)
 
+#define php_stream_set_chunk_size(stream, size) php_stream_set_option((stream), PHP_STREAM_OPTION_SET_CHUNK_SIZE, (size), NULL TSRMLS_CC)
+
 /* change the blocking mode of stream: value == 1 => blocking, value == 0 => non-blocking. */
 #define PHP_STREAM_OPTION_BLOCKING     1
 
 /* change the buffering mode of stream. value is a PHP_STREAM_BUFFER_XXXX value, ptrparam is a ptr to a size_t holding
  * the required buffer size */
-#define PHP_STREAM_OPTION_BUFFER       2
+#define PHP_STREAM_OPTION_READ_BUFFER  2
+#define PHP_STREAM_OPTION_WRITE_BUFFER 3
 
 #define PHP_STREAM_BUFFER_NONE 0       /* unbuffered */
 #define PHP_STREAM_BUFFER_LINE 1       /* line buffered */
 #define PHP_STREAM_BUFFER_FULL 2       /* fully buffered */
 
+/* set the timeout duration for reads on the stream. ptrparam is a pointer to a struct timeval * */
+#define PHP_STREAM_OPTION_READ_TIMEOUT 4
+#define PHP_STREAM_OPTION_SET_CHUNK_SIZE       5
+
 #define PHP_STREAM_OPTION_RETURN_OK                     0 /* option set OK */
 #define PHP_STREAM_OPTION_RETURN_ERR           -1 /* problem setting option */
 #define PHP_STREAM_OPTION_RETURN_NOTIMPL       -2 /* underlying stream does not implement; streams can handle it instead */
index 68928548e4efaf5bfe3aef356a51872e2a941a37..b578ac89d1f18c8f44927c326dee22246a967c97 100755 (executable)
@@ -799,7 +799,12 @@ PHPAPI int _php_stream_set_option(php_stream *stream, int option, int value, voi
        
        if (ret == PHP_STREAM_OPTION_RETURN_NOTIMPL) {
                switch(option) {
-                       case PHP_STREAM_OPTION_BUFFER:
+                       case PHP_STREAM_OPTION_SET_CHUNK_SIZE:
+                               ret = stream->chunk_size;
+                               stream->chunk_size = value;
+                               return ret;
+
+                       case PHP_STREAM_OPTION_READ_BUFFER:
                                /* try to match the buffer mode as best we can */
                                if (value == PHP_STREAM_BUFFER_NONE) {
                                        stream->flags |= PHP_STREAM_FLAG_NO_BUFFER;
@@ -1291,7 +1296,7 @@ static int php_stdiop_set_option(php_stream *stream, int option, int value, void
                        return -1; /* not yet implemented */
 #endif
                        
-               case PHP_STREAM_OPTION_BUFFER:
+               case PHP_STREAM_OPTION_WRITE_BUFFER:
                        if (ptrparam)
                                size = *(size_t *)ptrparam;
                        else