Figure 4: Request class for the sample application

#ifndef REQUEST_H
#define REQUEST_H

#include "resultIOU.h"
#include "error.h"

struct IRequest;
struct IResultIOUReadable;

class IOUSink;

class Request : public SupportsErrorInfo
{
public:
    Request();
    ~Request();

    bool select(BSTR selectStatement);
    bool send(bool notify, ResultIOU& IOU);

protected:
    virtual void 
    getErrorInfoParams(IUnknown *&pUnk, 
        const IID *&riid) const;

private:
    IOUSink* 
    createAndConnectSink
        (IResultIOUReadable *pResultIOU);

    const Request&
    operator=(const Request&);
    Request(const Request&);

    mutable IRequest *pRequest_;
};