virtual Binary::Container::Ptr OpenData(const String& path, const Parameters::Accessor& params, Log::ProgressCallback& cb) const { Dbg("Opening path '%1%'", path); if (Identifier::Ptr id = Resolve(path)) { if (const DataProvider* provider = FindProvider(id->Scheme())) { Dbg(" Used provider '%1%'", provider->Id()); return provider->Open(id->Path(), params, cb); } } Dbg(" No suitable provider found"); throw Error(THIS_LINE, translate("Specified uri scheme is not supported.")); }
virtual Binary::OutputStream::Ptr CreateStream(const String& path, const Parameters::Accessor& params, Log::ProgressCallback& cb) const { Dbg("Creating stream '%1%'", path); if (Identifier::Ptr id = Resolve(path)) { if (const DataProvider* provider = FindProvider(id->Scheme())) { Dbg(" Used provider '%1%'", provider->Id()); //pass nonchanged parameter to lower level return provider->Create(path, params, cb); } } Dbg(" No suitable provider found"); throw Error(THIS_LINE, translate("Specified uri scheme is not supported.")); }
CQuotesProviders::TQuotesProviderPtr CQuotesProviders::GetContactProviderPtr(HANDLE hContact)const { char* szProto = reinterpret_cast<char*>(CallService(MS_PROTO_GETCONTACTBASEPROTO, reinterpret_cast<WPARAM>(hContact),0)); if(NULL == szProto || 0 != ::_stricmp(szProto,QUOTES_PROTOCOL_NAME)) { return TQuotesProviderPtr(); } tstring sProvider = Quotes_DBGetStringT(hContact,QUOTES_MODULE_NAME,DB_STR_QUOTE_PROVIDER); if(true == sProvider.empty()) { return TQuotesProviderPtr(); } return FindProvider(sProvider); }