本文整理汇总了C++中URI::scheme方法的典型用法代码示例。如果您正苦于以下问题:C++ URI::scheme方法的具体用法?C++ URI::scheme怎么用?C++ URI::scheme使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类URI
的用法示例。
在下文中一共展示了URI::scheme方法的13个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: write_mesh
void WriteMesh::write_mesh( const Mesh& mesh, const URI& file, const std::vector<URI>& fields)
{
update_list_of_available_writers();
/// @todo this should be improved to allow http(s) which would then upload the mesh
/// to a remote location after writing to a temporary file
/// uploading can be achieved using the curl library (which we already search for in the build system)
URI filepath = file;
if( filepath.scheme() != URI::Scheme::FILE )
filepath.scheme( URI::Scheme::FILE );
const std::string extension = filepath.extension();
if ( m_extensions_to_writers.count(extension) == 0 )
throw FileFormatError (FromHere(), "No meshwriter exists for files with extension " + extension);
if (m_extensions_to_writers[extension].size()>1)
{
std::string msg;
msg = filepath.string() + " has ambiguous extension " + extension + "\n"
+ "Possible writers for this extension are: \n";
boost_foreach(const Handle< MeshWriter > writer , m_extensions_to_writers[extension])
msg += " - " + writer->name() + "\n";
throw FileFormatError( FromHere(), msg);
}
示例2: icase_equal
bool operator == (const URI& lhs, const URI& rhs) noexcept {
return icase_equal(lhs.scheme(), rhs.scheme())
and (lhs.userinfo() == rhs.userinfo())
and icase_equal(lhs.host(), rhs.host())
and lhs.port() == rhs.port()
and lhs.path() == rhs.path()
and lhs.query() == rhs.query()
and lhs.fragment() == rhs.fragment();
}
示例3: Failure
Future<Nothing> Fetcher::fetch(
const URI& uri,
const string& directory) const
{
if (!plugins.contains(uri.scheme())) {
return Failure("Scheme '" + uri.scheme() + "' is not supported");
}
return plugins.at(uri.scheme())->fetch(uri, directory);
}
示例4: set_data_set
void CPlotter::set_data_set(const URI &uri)
{
cf3_assert ( !uri.empty() );
cf3_assert ( uri.scheme() == URI::Scheme::CPATH );
m_data = uri;
}
示例5: PullExternalStream
bool BaseAppProtocolHandler::PullExternalStream(URI uri, Variant streamConfig)
{
WARN("Pulling in streams for scheme %s in application %s not yet implemented. Stream configuration was:\n%s",
STR(uri.scheme()),
STR(GetApplication()->GetName()),
STR(streamConfig.ToString()));
return false;
}
示例6: add_signal_frame
XmlNode Protocol::add_signal_frame ( XmlNode& node, const std::string & target,
const URI & sender, const URI & receiver,
bool user_trans )
{
cf3_assert(sender.scheme() == URI::Scheme::CPATH);
cf3_assert(receiver.scheme() == URI::Scheme::CPATH);
XmlNode signalnode = node.add_node( Tags::node_frame() );
signalnode.set_attribute( "type", Tags::node_type_signal() );
signalnode.set_attribute( "target", target );
signalnode.set_attribute( "sender", sender.string() );
signalnode.set_attribute( "receiver", receiver.string() );
signalnode.set_attribute( "transaction", user_trans ? "user" : "auto" );
signalnode.set_attribute( "frameid", common::UUCount().string() );
return signalnode;
}
示例7: add_signal_frame
XmlNode Protocol::add_signal_frame ( XmlNode& node, const std::string & target,
const URI & sender, const URI & receiver,
bool user_trans )
{
cf_assert(sender.scheme() == URI::Scheme::CPATH);
cf_assert(receiver.scheme() == URI::Scheme::CPATH);
std::string uuid = boost::lexical_cast<std::string>(boost::uuids::random_generator()());
XmlNode signalnode = node.add_node( Tags::node_frame() );
signalnode.set_attribute( "type", Tags::node_type_signal() );
signalnode.set_attribute( "target", target );
signalnode.set_attribute( "sender", sender.string() );
signalnode.set_attribute( "receiver", receiver.string() );
signalnode.set_attribute( "transaction", user_trans ? "user" : "auto" );
signalnode.set_attribute( "frameid", uuid );
return signalnode;
}
示例8:
std::size_t URI::HashFn::operator()(const URI& uri) const
{
std::size_t seed = 0;
if (uri.scheme()) {
boost::hash_combine(seed, *uri.scheme());
}
if (uri.authority()) {
boost::hash_combine(seed, *uri.authority());
}
boost::hash_combine(seed, uri.path());
if (uri.query()) {
boost::hash_combine(seed, *uri.query());
}
if (uri.fragment()) {
boost::hash_combine(seed, *uri.fragment());
}
return seed;
}
示例9:
void
HTTPEngineSender::get(const URI& uri)
{
if (!Raul::Path::is_path(uri) && uri.scheme() != "http") {
LOG(warn) << "Ignoring GET of non-HTTP URI " << uri << endl;
return;
}
const std::string request_uri = (Raul::Path::is_path(uri))
?_engine_url.str() + "/patch" + uri.substr(uri.find("/"))
: uri.str();
cout << "Get " << request_uri << endl;
LOG(debug) << "Get " << request_uri << endl;
SoupMessage* msg = soup_message_new("GET", request_uri.c_str());
HTTPClientReceiver::send(msg);
}
示例10: options
void C3DViewBuilder::signal_create_3dview(SignalArgs &args)
{
SignalOptions options( args );
std::string name = options.value<std::string>("3DView name");
URI parent = options.value<URI>("Parent");
// some checks
if(name.empty())
throw BadValue(FromHere(), "The 3DView name is empty.");
if(parent.empty())
throw BadValue(FromHere(), "The parent is empty.");
if(parent.scheme() != URI::Scheme::CPATH)
throw InvalidURI(FromHere(), "The parent scheme is not CPATH");
// create and add the component
Handle<Component> parent_comp = Core::instance().root().access_component(parent);
Handle<C3DView> view = parent_comp->create_component<C3DView>( name );
view->mark_basic();
}
示例11: signal_create_xyplot
void CPlotter::signal_create_xyplot(SignalArgs &args)
{
SignalOptions options( args );
std::string name = options.value<std::string>("Plot name");
URI parent = options.value<URI>("Parent");
// some checks
if(name.empty())
throw BadValue(FromHere(), "The plot name is empty.");
if(parent.empty())
throw BadValue(FromHere(), "The parent is empty.");
if(parent.scheme() != URI::Scheme::CPATH)
throw InvalidURI(FromHere(), "The parent scheme is not CPATH");
// create and add the component
Handle< Component > parent_comp = Core::instance().root().access_component(parent);
boost::shared_ptr< CPlotXY > plot(common::allocate_component<CPlotXY>(name));
parent_comp->add_component( plot );
plot->mark_basic();
plot->set_data(m_data);
}
示例12: getCredentialsFromKeychain
bool getCredentialsFromKeychain(const URI &uri, ClientRequest::ptr priorRequest,
std::string &scheme, std::string &realm, std::string &username,
std::string &password, size_t attempts)
{
if (attempts != 1)
return false;
bool proxy =
priorRequest->response().status.status == PROXY_AUTHENTICATION_REQUIRED;
const ChallengeList &challengeList = proxy ?
priorRequest->response().response.proxyAuthenticate :
priorRequest->response().response.wwwAuthenticate;
if (isAcceptable(challengeList, "Basic"))
scheme = "Basic";
else if (isAcceptable(challengeList, "Digest"))
scheme = "Digest";
else
return false;
std::vector<SecKeychainAttribute> attrVector;
std::string host = uri.authority.host();
attrVector.push_back((SecKeychainAttribute){kSecServerItemAttr, host.size(),
(void *)host.c_str()});
UInt32 port = 0;
if (uri.authority.portDefined()) {
port = uri.authority.port();
attrVector.push_back((SecKeychainAttribute){kSecPortItemAttr,
sizeof(UInt32), &port});
}
SecProtocolType protocol;
if (proxy && priorRequest->request().requestLine.method == CONNECT)
protocol = kSecProtocolTypeHTTPSProxy;
else if (proxy)
protocol = kSecProtocolTypeHTTPProxy;
else if (uri.scheme() == "https")
protocol = kSecProtocolTypeHTTPS;
else if (uri.scheme() == "http")
protocol = kSecProtocolTypeHTTP;
else
MORDOR_NOTREACHED();
attrVector.push_back((SecKeychainAttribute){kSecProtocolItemAttr,
sizeof(SecProtocolType), &protocol});
ScopedCFRef<SecKeychainSearchRef> search;
SecKeychainAttributeList attrList;
attrList.count = (UInt32)attrVector.size();
attrList.attr = &attrVector[0];
OSStatus status = SecKeychainSearchCreateFromAttributes(NULL,
kSecInternetPasswordItemClass, &attrList, &search);
if (status != 0)
return false;
ScopedCFRef<SecKeychainItemRef> item;
status = SecKeychainSearchCopyNext(search, &item);
if (status != 0)
return false;
SecKeychainAttributeInfo info;
SecKeychainAttrType tag = kSecAccountItemAttr;
CSSM_DB_ATTRIBUTE_FORMAT format = CSSM_DB_ATTRIBUTE_FORMAT_STRING;
info.count = 1;
info.tag = (UInt32 *)&tag;
info.format = (UInt32 *)&format;
SecKeychainAttributeList *attrs;
UInt32 passwordLength = 0;
void *passwordBytes = NULL;
status = SecKeychainItemCopyAttributesAndData(item, &info, NULL, &attrs,
&passwordLength, &passwordBytes);
if (status != 0)
return false;
try {
username.assign((const char *)attrs->attr[0].data, attrs->attr[0].length);
password.assign((const char *)passwordBytes, passwordLength);
} catch (...) {
SecKeychainItemFreeContent(attrs, passwordBytes);
throw;
}
SecKeychainItemFreeContent(attrs, passwordBytes);
return true;
}
示例13: complete_path
void Component::complete_path ( URI& path ) const
{
using namespace boost::algorithm;
// CFinfo << "PATH [" << path.string() << "]\n" << CFflush;
cf_assert( path.scheme() == URI::Scheme::CPATH );
if(path.empty())
path = "./";
if ( is_null(m_raw_parent) )
throw InvalidURI(FromHere(), "Component \'" + name() + "\' has no parent");
if (m_root.expired())
throw InvalidURI(FromHere(), "Component \'" + name() + "\' has no root");
boost::shared_ptr<Component> parent = m_raw_parent->self();
boost::shared_ptr<Component> root = m_root.lock();
std::string sp = path.path();
if ( path.is_relative() ) // transform it to absolute
{
if ( starts_with(sp,"/") ) // remove leading "/" if any
boost::algorithm::replace_first(sp, "/", "" );
// substitute leading "../" for uri() of parent
if (starts_with(sp,".."))
{
std::string pfp = parent->uri().path();
boost::algorithm::replace_first(sp, "..", pfp);
}
// substitute leading "./" for uri() of this component
else if (starts_with(sp,"."))
{
boost::algorithm::replace_first(sp, ".", uri().path());
}
else
{
sp = uri().path()+"/"+sp;
}
}
cf_assert ( URI(sp).is_absolute() );
// break path in tokens and loop on them, while concatenaitng to a new path
boost::char_separator<char> sep("/");
typedef boost::tokenizer<boost::char_separator<char> > tokenizer;
tokenizer tok (sp,sep);
path = "/" ;
std::string last;
for(tokenizer::iterator el=tok.begin(); el!=tok.end(); ++el)
{
if ( equals (*el, ".") ) continue; // substitute any "/./" for nothing
if ( equals (*el, "..") ) // substitute any "../" for base path
path = path.base_path();
else
path /= *el;
}
// CFinfo << "FINAL PATH: [" << path.string() << "]\n" << CFflush;
cf_assert ( path.is_complete() );
}