Definition at line 29 of file iwvstream.h.
Public Member Functions | |
IWvStream () | |
virtual | ~IWvStream () |
virtual void | close ()=0 |
virtual bool | isok () const =0 |
By default, returns true if geterr() == 0. | |
virtual void | callback ()=0 |
virtual int | getrfd () const =0 |
virtual int | getwfd () const =0 |
virtual const WvAddr * | src () const =0 |
virtual bool | pre_select (SelectInfo &si)=0 |
virtual bool | post_select (SelectInfo &si)=0 |
virtual size_t | read (void *buf, size_t count)=0 |
virtual size_t | write (const void *buf, size_t count)=0 |
virtual size_t | read (WvBuf &outbuf, size_t count)=0 |
virtual size_t | write (WvBuf &inbuf, size_t count=INT_MAX)=0 |
virtual void | noread ()=0 |
Shuts down the reading side of the stream. | |
virtual void | nowrite ()=0 |
Shuts down the writing side of the stream. | |
virtual void | maybe_autoclose ()=0 |
Auto-close the stream if the time is right. | |
virtual bool | isreadable ()=0 |
Returns true if the stream is readable. | |
virtual bool | iswritable ()=0 |
Returns true if the stream is writable (without using the outbuf). | |
virtual bool | flush (time_t msec_timeout)=0 |
flush the output buffer, if we can do it without delaying more than msec_timeout milliseconds at a time. | |
virtual bool | should_flush ()=0 |
Returns true if we want to flush the output buffer right now. | |
virtual IWvStreamCallback | setreadcallback (IWvStreamCallback _callfunc)=0 |
Sets a callback to be invoked when the stream is readable. | |
virtual IWvStreamCallback | setwritecallback (IWvStreamCallback _callfunc)=0 |
Sets a callback to be invoked when the stream is writable. | |
virtual IWvStreamCallback | setexceptcallback (IWvStreamCallback _callfunc)=0 |
Sets a callback to be invoked when the stream is in exception state. | |
virtual IWvStreamCallback | setclosecallback (IWvStreamCallback _callfunc)=0 |
Sets a callback to be invoked on close(). | |
virtual int | geterr () const |
If isok() is false, return the system error number corresponding to the error, -1 for a special error string (which you can obtain with errstr()) or 0 on end of file. | |
virtual WvString | errstr () const |
virtual void | seterr (int _errnum) |
Set the errnum variable -- we have an error. | |
void | seterr (WvStringParm specialerr) |
void | seterr (WVSTRING_FORMAT_DECL) |
void | seterr (const WvErrorBase &err) |
void | seterr_both (int _errnum, WvStringParm specialerr) |
void | noerr () |
Reset our error state - there's no error condition anymore. | |
virtual unsigned int | addRef ()=0 |
Indicate you are using this object. | |
virtual unsigned int | release ()=0 |
Indicate that you are finished using this object. | |
virtual IObject * | getInterface (const UUID &)=0 |
Returns the requested XPLC interface. | |
virtual IWeakRef * | getWeakRef ()=0 |
Return a weak reference to this object. | |
Static Public Member Functions | |
static WvString | strerror (int errnum) |
A replacement for the operating system strerror() function that can map more kinds of error strings (especially in win32). | |
Protected Attributes | |
int | errnum |
WvString | errstring |
Classes | |
struct | SelectInfo |
the data structure used by pre_select()/post_select() and internally by select(). More... | |
struct | SelectRequest |
A SelectRequest is a convenient way to remember what we want to do to a particular stream: read from it, write to it, or check for exceptions. More... |
|
By default, returns true if geterr() == 0. Might be overridden so that isok() == false even though no error code has been specified. Reimplemented from WvErrorBase. Implemented in WvBufStream, WvDsp, WvEncoderStream, WvFdStream, WvHTTPStream, WvIStreamList, WvLog, WvSSLStream, WvStream, WvStreamClone, WvTCPConn, WvTimeoutStream, WvTimeStream, WvFileWatcher, and _WvConStream. Referenced by WvSSLStream::close(), WvIStreamList::execute(), WvStreamClone::post_select(), WvSSLStream::post_select(), WvStreamClone::pre_select(), and WvStreamClone::uread(). |
|
Shuts down the reading side of the stream. This is the opposite of nowrite(), but the name is actually slightly misleading; subsequent calls to read() *might not* fail; rather, if the other end of the connection tries to write to us, they should fail. After noread(), if the read buffer (if any) is empty once, we promise that it will never refill. If you call both noread() and nowrite(), then the stream does close() automatically once all buffers are empty. Implemented in WvSSLStream, WvStream, and WvStreamClone. Referenced by WvStreamClone::noread(). |
|
Shuts down the writing side of the stream. Subsequent calls to write() will fail. But if there's data in the output buffer, it will still be flushed. If you call both noread() and nowrite(), then the stream does close() automatically once all buffers are empty. Implemented in WvSSLStream, WvStream, and WvStreamClone. Referenced by WvStreamClone::flush_internal(), and WvStreamClone::nowrite(). |
|
Auto-close the stream if the time is right. If noread() and nowrite() and all buffers are empty, then we can probably close. Implemented in WvFdStream, and WvStream. |
|
flush the output buffer, if we can do it without delaying more than msec_timeout milliseconds at a time. (-1 means wait forever) Returns true if it finished flushing (ie. the outbuf is empty). FIXME: Something like this probably belongs in IWvStream, but probably not exactly this. Implemented in WvStream. Referenced by WvStreamClone::flush_internal(). |
|
Returns true if we want to flush the output buffer right now. This allows us to implement delayed_flush(), flush_then_close(), etc, but it's still super-ugly and probably needs to go away. (In fact, all our buffer flushing is super-ugly right now.) Implemented in WvStream. Referenced by WvStreamClone::post_select(). |
|
If isok() is false, return the system error number corresponding to the error, -1 for a special error string (which you can obtain with errstr()) or 0 on end of file. If isok() is true, returns an undefined number. Reimplemented in WvHTTPStream, WvStreamClone, and WvX509Mgr. Definition at line 48 of file wverror.h. References WvErrorBase::errnum. Referenced by UniIniGen::commit(), WvX509Mgr::errstr(), WvStreamClone::errstr(), WvErrorBase::errstr(), WvError::get(), UniFileSystemGen::get(), WvX509Mgr::geterr(), WvStreamClone::geterr(), WvEncoderStream::isok(), WvConf::load_file(), WvConf::save(), WvStream::seterr(), WvErrorBase::seterr(), WvMagicCircle::WvMagicCircle(), and WvHttpPool::~WvHttpPool(). |
|
|
Indicate you are using this object. This increases the reference count of the object by one. Usually, when the reference count reaches zero, the object is freed automatically. This called a "strong reference", because they will prevent the object from being destroyed. They should thus be used carefully, as they control the lifetime of the object. For example, you do not need to call addRef() on object passed as parameters, unless you intend on keeping them. addRef() is often called automatically for you in XPLC, but you'll have to call release() by hand sometimes unless you use xplc_ptr. Referenced by IObjectImplInternal::getInterface(), WeakRef::getObject(), StaticServiceHandler::getObject(), HandlerNode::HandlerNode(), ObjectNode::ObjectNode(), and WvSSLStream::WvSSLStream(). |
|
Indicate that you are finished using this object. This decreases the reference count of the object by one. Usually, when the reference count reaches zero, the object is freed automatically. You will usually need to manually release() any object given to you by any other XPLC function, unless you give the object to someone else who will call release. If you use xplc_ptr, it will do this for you. Referenced by ModuleManagerFactory::createModuleManager(), Module::Module(), mutate(), NewMoniker::resolve(), MonikerService::resolve(), Category::~Category(), CategoryIterator::~CategoryIterator(), HandlerNode::~HandlerNode(), ModuleNode::~ModuleNode(), and ObjectNode::~ObjectNode(). |
|
Returns the requested XPLC interface. Will return NULL if the interface is not supported. The returned interface has been addRef()ed, so you will need to release() it when done. Note that the interface returned may be a pointer to the same object or a different one - that's none of your business. Asking for the IObject interface should always return the same pointer for a given logical object, so this can be used for comparison by identity. You should probably use the convenient mutate() and get() functions instead of this, or use an xplc_ptr, which mutates the object for you. |
|
Return a weak reference to this object. A weak reference points at the object, but does not control the lifetime of the object. An object can thus still be deleted while someone holds a weak reference. You will still need to release() the weak reference when you are done with it.
|