+/** Resource reader delegate. */
+class SR_API ResourceReader
+{
+public:
+ ResourceReader() {}
+ virtual ~ResourceReader();
+private:
+ /** Resource open hook. */
+ virtual void open(struct sr_resource *res, string name) = 0;
+ /** Resource close hook. */
+ virtual void close(struct sr_resource *res) = 0;
+ /** Resource read hook. */
+ virtual size_t read(const struct sr_resource *res, void *buf, size_t count) = 0;
+
+ static SR_PRIV int open_callback(struct sr_resource *res,
+ const char *name, void *cb_data);
+ static SR_PRIV int close_callback(struct sr_resource *res,
+ void *cb_data);
+ static SR_PRIV ssize_t read_callback(const struct sr_resource *res,
+ void *buf, size_t count, void *cb_data);
+ friend class Context;
+};
+