#include <arc/data/DataPointDirect.h>
namespace Arc {
class DataPointMyProtocol : public DataPointDirect {
public:
DataPointMyProtocol(const URL& url, const UserConfig& usercfg, PluginArgument* parg);
static Plugin* Instance(PluginArgument *arg);
virtual DataStatus Check(bool check_meta);
virtual DataStatus Remove();
virtual DataStatus StartReading(DataBuffer& buffer);
virtual DataStatus StartWriting(DataBuffer& buffer,
DataCallback *space_cb = NULL);
virtual DataStatus StopReading();
virtual DataStatus StopWriting();
};
DataPointMyProtocol::DataPointMyProtocol(const URL& url, const UserConfig& usercfg, PluginArgument* parg)
: DataPointDirect(url, usercfg, parg) {}
DataStatus DataPointMyProtocol::Stat(FileInfo& file,
DataStatus DataPointMyProtocol::List(std::list<FileInfo>& file,
DataStatus DataPointMyProtocol::StartReading(DataBuffer& buffer) {
return DataStatus::Success; }
DataStatus DataPointMyProtocol::StartWriting(DataBuffer& buffer,
Plugin* DataPointMyProtocol::Instance(PluginArgument *arg) {
DataPointPluginArgument *dmcarg = dynamic_cast<DataPointPluginArgument*>(arg);
if (!dmcarg)
return NULL;
if (((const URL &)(*dmcarg)).Protocol() != "my")
return NULL;
return new DataPointMyProtocol(*dmcarg, *dmcarg, dmcarg);
}
}
Arc::PluginDescriptor ARC_PLUGINS_TABLE_NAME[] = {
{ "my", "HED:DMC", "My protocol", 0, &Arc::DataPointMyProtocol::Instance },
{ NULL, NULL, NULL, 0, NULL }
};