Struct reopen::Reopen [] [src]

pub struct Reopen<FD> { /* fields omitted */ }

A Read/Write proxy that can reopen the underlying object.

It is constructed with a function that can open a new instance of the object. If it is signaled to reopen it (though handle), it drops the old instance and uses the function to create a new one at the next IO operation.

Error handling

The reopening is performed lazily, on the first operation done to the object. Opening a new instance can fail with an error. If this happens, the error is returned as part of the operation being performed ‒ therefore, you can get an error like File not found while performing read.

If an error happens, the operation is aborted. Next time an operation is performed, another attempt to open the object is made (which in turn can fail again).

Methods

impl<FD> Reopen<FD>
[src]

[src]

Creates a new instance.

[src]

Creates a new instance from the given handle.

This might come useful if you want to create the handle beforehand with Handle::stub (eg. in lazy_static). Note that using the same handle for multiple Reopens will not work as expected (the first one to be used resets the signal and the others don't reopen).

Examples

// Something that implements `Write`, for example.
struct Writer;

let handle = Handle::stub();
let reopen = Reopen::with_handle(handle.clone(), Box::new(|| Ok(Writer)));

handle.reopen();

[src]

Returns a handle to signal this Reopen to perform the reopening.

Trait Implementations

impl<FD: Read> Read for Reopen<FD>
[src]

[src]

Pull some bytes from this source into the specified buffer, returning how many bytes were read. Read more

[src]

🔬 This is a nightly-only experimental API. (read_initializer)

Determines if this Reader can work with buffers of uninitialized memory. Read more

1.0.0
[src]

Read all bytes until EOF in this source, placing them into buf. Read more

1.0.0
[src]

Read all bytes until EOF in this source, appending them to buf. Read more

1.6.0
[src]

Read the exact number of bytes required to fill buf. Read more

1.0.0
[src]

Creates a "by reference" adaptor for this instance of Read. Read more

1.0.0
[src]

Transforms this Read instance to an [Iterator] over its bytes. Read more

[src]

🔬 This is a nightly-only experimental API. (io)

the semantics of a partial read/write of where errors happen is currently unclear and may change

Transforms this Read instance to an [Iterator] over [char]s. Read more

1.0.0
[src]

Creates an adaptor which will chain this stream with another. Read more

1.0.0
[src]

Creates an adaptor which will read at most limit bytes from it. Read more

impl<FD: Write> Write for Reopen<FD>
[src]

[src]

Write a buffer into this object, returning how many bytes were written. Read more

[src]

Flush this output stream, ensuring that all intermediately buffered contents reach their destination. Read more

1.0.0
[src]

Attempts to write an entire buffer into this write. Read more

1.0.0
[src]

Writes a formatted string into this writer, returning any error encountered. Read more

1.0.0
[src]

Creates a "by reference" adaptor for this instance of Write. Read more

Auto Trait Implementations

impl<FD> Send for Reopen<FD> where
    FD: Send

impl<FD> !Sync for Reopen<FD>