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;
}
}