public virtual bool SetParameter(StreamParameterOptions option, PhpValue value) { // Do not display error messages here, the caller will. // EX: will have to distinguish between failed and unsupported. // (use additional message when fails) // Descendants may call this default implementation for unhandled options switch (option) { case StreamParameterOptions.BlockingMode: // Unimplemented in Win32 PHP. return false; case StreamParameterOptions.ReadBufferSize: // Unused option (only turns buffering off) return false; case StreamParameterOptions.WriteBufferSize: if (value.IsInteger()) { // Let the write buffer reset on next write operation. FlushWriteBuffer(); writeBuffer = null; // Set the new size (0 to disable write buffering). writeBufferSize = (int)value.ToLong(); if (writeBufferSize < 0) writeBufferSize = 0; return true; } return false; case StreamParameterOptions.ReadTimeout: // Set the read timeout for network-based streams (overrides DefaultTimeout). this.readTimeout = (double)value; return false; case StreamParameterOptions.SetChunkSize: if (value.IsInteger()) { // This setting will affect reading after the buffers are emptied. readChunkSize = (int)value.ToLong(); if (readChunkSize < 1) readChunkSize = 1; return true; } return false; case StreamParameterOptions.Locking: return false; case StreamParameterOptions.MemoryMap: return false; case StreamParameterOptions.Truncate: // EX: [Truncate] Override SetParameter in NativeStream to truncate a local file. return false; default: Debug.Assert(false); // invalid option return false; } }