Example #1
0
void MapBox::setProvider(const QString & providerId)
{
    if (m_providerId == providerId)
        return;

    m_providerId = providerId;

    createProvider();
}
Example #2
0
ProviderPtr
ImporterManager::createProvider( QVariantMap config )
{
    Controller *controller = Amarok::Components::statSyncingController();

    // First, get rid of the old provider instance. Note: the StatSyncing::Config
    // remembers the provider by the id, even when it's unregistered. After this
    // block, old instance should be destroyed, its destructor called.
    if( config.contains( "uid" ) )
    {
        const QString providerId = config.value( "uid" ).toString();
        if( m_providers.contains( providerId ) )
        {
            ProviderPtr oldProvider = m_providers.take( providerId );
            if( controller )
                controller->unregisterProvider( oldProvider );
        }
    }

    // Create a concrete provider using the config. The QueuedConnection in connect()
    // is important, because on reconfigure we *destroy* the old provider instance
    ImporterProviderPtr provider = newInstance( config );
    if( !provider )
    {
        warning() << __PRETTY_FUNCTION__ << "created provider is null!";
        return provider;
    }

    connect( provider.data(), SIGNAL(reconfigurationRequested(QVariantMap)),
                                SLOT(createProvider(QVariantMap)), Qt::QueuedConnection);
    m_providers.insert( provider->id(), provider );

    // Register the provider
    if( controller )
    {
        controller->registerProvider( provider );

        // Set provider to offline
        if( Config *config = controller->config() )
        {
            config->updateProvider( provider->id(), provider->prettyName(),
                                    provider->icon(), /*online*/ false );
            config->save();
        }
    }

    // Save the settings
    KConfigGroup group = providerConfig( provider );
    group.deleteGroup();
    foreach( const QString &key, provider->m_config.keys() )
        group.writeEntry( key, provider->m_config.value( key ) );
    group.sync();

    return provider;
}
HippoIpcController *
HippoIpcLocator::getController(const char *url)
{
    HippoIpcController *controller = map_->get(url);
    if (!controller) {
        HippoIpcProvider *provider = createProvider(url);
        controller = HippoIpcController::createInstance(provider);
        map_->insert(url, provider, controller);
    }

    return controller;
}
Example #4
0
CIMProvider* ProviderModule::load(const String& providerName)
{
    // dynamically load the provider library
    if (!_library.load())
    {
        throw Exception(MessageLoaderParms(
            "ProviderManager.ProviderModule.CANNOT_LOAD_LIBRARY",
            "ProviderLoadFailure ($0:$1):Cannot load library, error: $2",
            _library.getFileName(),
            providerName,
            _library.getLoadErrorMessage()));
    }

    // find library entry point
    CIMProvider * (*createProvider)(const String&) =
        (CIMProvider* (*)(const String&))
            _library.getSymbol("PegasusCreateProvider");

    if (createProvider == 0)
    {
        _library.unload();
        throw Exception(MessageLoaderParms(
            "ProviderManager.ProviderModule.ENTRY_POINT_NOT_FOUND",
            "ProviderLoadFailure ($0:$1):entry point not found.",
            _library.getFileName(),
            providerName));
    }

    // invoke the provider entry point
    CIMProvider* provider = createProvider(providerName);

    // test for the appropriate interface
    if (dynamic_cast<CIMProvider *>(provider) == 0)
    {
        _library.unload();
        throw Exception(MessageLoaderParms(
            "ProviderManager.ProviderModule.PROVIDER_IS_NOT_A",
            "ProviderLoadFailure ($0:$1):provider is not a CIMProvider.",
            _library.getFileName(),
            providerName));
    }

    return provider;
}
Example #5
0
static void Test_ExtendSignature_useProvider(CuTest* tc, const char *uri_host, unsigned port, const char *user, const char *key, const char *pub_uri,
		int (*createProvider)(KSI_CTX *ctx, KSI_NetworkClient **http),
		int (*setPubfail)(KSI_NetworkClient *client, const char *url),
		int (*setExtender)(KSI_NetworkClient *client, const char *url_host, unsigned port, const char *user, const char *pass)) {
	int res = KSI_UNKNOWN_ERROR;
	KSI_Signature *sig = NULL;
	KSI_Signature *ext = NULL;
	KSI_NetworkClient *client = NULL;
	KSI_CTX *ctx = NULL;

	/* Create the context. */
	res = KSI_CTX_new(&ctx);
	CuAssert(tc, "Unable to create ctx.", res == KSI_OK && ctx != NULL);

	res = createProvider(ctx, &client);
	CuAssert(tc, "Unable to create network client.", res == KSI_OK && client != NULL);

	res = setExtender(client, uri_host, port, user, key);
	CuAssert(tc, "Unable to set extender specific service information.", res == KSI_OK);

	res = setPubfail(client, pub_uri);
	CuAssert(tc, "Unable to set publications file url.", res == KSI_OK);

	res = KSI_CTX_setNetworkProvider(ctx, client);
	CuAssert(tc, "Unable to set new network client.", res == KSI_OK);
	client = NULL;

	res = KSI_Signature_fromFile(ctx, getFullResourcePath("resource/tlv/ok-sig-2014-07-01.1.ksig"), &sig);
	CuAssert(tc, "Unable to set read signature from file.", res == KSI_OK && sig != NULL);

	res = KSI_Signature_extend(sig, ctx, NULL, &ext);
	CuAssert(tc, "The extending of signature must not fail.", res == KSI_OK && ext != NULL);

	KSI_NetworkClient_free(client);
	KSI_Signature_free(sig);
	KSI_Signature_free(ext);
	KSI_CTX_free(ctx);
	return;
}
Example #6
0
// The caller assumes the repsonsibility of making sure
// the libraryPath is correctly formatted
CIMIndicationConsumerProvider* ConsumerModule::load(
    const String & consumerName,
    const String & libraryPath)
{
    PEG_METHOD_ENTER(TRC_LISTENER, "ConsumerModule::load");

    // check whether the module is cached;
    // if it's not already in memory, load it
    if (!_library.isLoaded())
    {
        if (!FileSystem::exists(libraryPath) ||
            !FileSystem::canRead(libraryPath))
        {
            throw Exception(
                MessageLoaderParms(
                    "DynListener.ConsumerModule.INVALID_LIBRARY_PATH",
                    "The library ($0:$1) does not exist or cannot be read.",
                    libraryPath,
                    consumerName));
        }

        _library = DynamicLibrary(libraryPath);
    }

    PEG_TRACE((TRC_LISTENER,Tracer::LEVEL4,
        "Loading library(consumer module): %s",
        (const char*)consumerName.getCString()));

    if (!_library.load())
    {
        throw Exception(
            MessageLoaderParms(
                "DynListener.ConsumerModule.CANNOT_LOAD_LIBRARY",
                "Cannot load consumer library ($0:$1), load error $2",
                _library.getFileName(),
                consumerName,
                _library.getLoadErrorMessage()));
    }

    PEG_TRACE((TRC_LISTENER,Tracer::LEVEL3,
        "Successfully loaded library(consumer module) %s",
        (const char*)consumerName.getCString()));

    // locate the entry point
    CIMProvider* (*createProvider)(const String&) =
        (CIMProvider* (*)(const String&))
            _library.getSymbol("PegasusCreateProvider");

    if (!createProvider)
    {
        _library.unload();
        throw Exception(
            MessageLoaderParms(
                "DynListener.ConsumerModule.ENTRY_POINT_NOT_FOUND",
                "The entry point for consumer library ($0:$1) cannot be found.",
                libraryPath,
                consumerName));
    }

    // create the consumer provider
    CIMProvider* providerRef = createProvider(consumerName);

    if(!providerRef)
    {
        _library.unload();
        throw Exception(
            MessageLoaderParms(
               "DynListener.ConsumerModule.CREATE_PROVIDER_FAILED",
               "createProvider failed for consumer library ($0:$1)",
               libraryPath,
               consumerName));
    }

    // test for the appropriate interface
    CIMIndicationConsumerProvider* consumerRef =
        dynamic_cast<CIMIndicationConsumerProvider *>(providerRef);
    if(!consumerRef)
    {
        _library.unload();
        throw Exception(
            MessageLoaderParms(
                "DynListener.ConsumerModule.CONSUMER_IS_NOT_A",
                "Consumer ($0:$1) is not a CIMIndicationConsumerProvider.",
                libraryPath,
                consumerName));
    }

    PEG_METHOD_EXIT();
    return consumerRef;
}