Beispiel #1
0
static JSObject*
gjs_lookup_param_prototype(JSContext    *context)
{
    JS::RootedId gobject_name(context, gjs_intern_string_to_id(context, "GObject"));
    JS::RootedObject in_object(context,
        gjs_lookup_namespace_object_by_name(context, gobject_name));

    if (G_UNLIKELY (!in_object))
        return NULL;

    JS::RootedValue value(context);
    if (!JS_GetProperty(context, in_object, "ParamSpec", &value))
        return NULL;

    if (G_UNLIKELY (!value.isObject()))
        return NULL;

    JS::RootedObject constructor(context, &value.toObject());
    g_assert(constructor);

    if (!gjs_object_get_property(context, constructor,
                                 GJS_STRING_PROTOTYPE, &value))
        return NULL;

    if (G_UNLIKELY (!value.isObjectOrNull()))
        return NULL;

    return value.toObjectOrNull();
}
Beispiel #2
0
os_boolean
in_channelInit(
    in_channel _this,
    in_objectKind kind,
    in_objectDeinitFunc deinit,
    in_stream stream,
    in_plugKernel plug,
    in_configChannel config)
{
    os_boolean success;

    assert(_this);
    assert(kind < IN_OBJECT_KIND_COUNT);
    assert(kind > IN_OBJECT_KIND_INVALID);
    assert(deinit);
    assert(stream);
    assert(plug);
    assert(config);

    success = in_objectInit(in_object(_this), kind, deinit);

    if(success)
    {
        _this->stream = in_streamKeep(stream);
        _this->plug = in_plugKernelKeep(plug);
        _this->config = config;
        _this->reader = NULL;
        _this->writer = NULL;
    }

    return success;
}
static os_boolean
in_ddsiDiscoveredReaderDataInit(
    in_ddsiDiscoveredReaderData _this)
{
    os_boolean success;
    assert(_this);

    success =
        in_objectInit(in_object(_this),
                IN_OBJECT_KIND_DISCOVERED_READER_DATA,
                in_ddsiDiscoveredReaderDataDeinit) &&
        in_ddsiSubscriptionBuiltinTopicDataInit(&_this->topicData) &&
        in_ddsiReaderProxyInit(&_this->proxy);

    return success;
}
os_boolean
in_connectivityPeerEntityInit(
    in_connectivityPeerEntity _this,
    in_objectKind kind,
    in_objectDeinitFunc deinit)
{
    os_boolean success;

    assert(_this);

    success = in_objectInit(
        in_object(_this),
        kind,
        deinit);

    return success;
}
Coll_List*
in_connectivityPeerEntityGetUnicastLocators(
    in_connectivityPeerEntity _this)
{
    assert(_this);
    switch (in_objectGetKind(in_object(_this))) {
        case IN_OBJECT_KIND_PEER_READER:
            return in_connectivityPeerReaderGetUnicastLocators(in_connectivityPeerReader(_this));
        case IN_OBJECT_KIND_PEER_WRITER:
            return in_connectivityPeerWriterGetUnicastLocators(in_connectivityPeerWriter(_this));
        case IN_OBJECT_KIND_PEER_PARTICIPANT:
            return in_connectivityPeerParticipantGetUnicastLocators(in_connectivityPeerParticipant(_this));
        default:
            assert(FALSE); /* one of the above should be valid */
    }
    return NULL;
}
static os_boolean
in_ddsiDiscoveredParticipantDataInit(
    in_ddsiDiscoveredParticipantData _this)
{
    os_boolean success;
    assert(_this);

    success =  in_objectInit(in_object(_this),
            IN_OBJECT_KIND_DISCOVERED_PARTICIPANT_DATA,
            in_ddsiDiscoveredParticipantDataDeinit);

    if(success)
    {
        success = in_ddsiParticipantBuiltinTopicDataInit(&_this->builtinTopicData);
        if(success)
        {
            success = in_ddsiParticipantProxyInit(&_this->proxy);
        }
        _this->leaseDuration = C_TIME_ZERO;
    }
    return success;
}
/** \brief destructor */
void
in_transportPairFree(in_transportPair _this)
{
	in_objectFree(in_object(_this));
}
Beispiel #8
0
void
in_serviceMain(
    const os_char* serviceName,
    const os_char* uri)
{
    u_service service;
    in_config config;
    in_result result;
    u_serviceManager serviceManager;
    in_controller controller;
    v_duration leasePeriod;
    os_time sleepTime;
    os_boolean terminate = OS_FALSE;
    in_connectivityAdmin admin;

    assert(serviceName);
    assert(uri);

    /* Create networking service with kernel */
    service = u_serviceNew(
        uri,
        IN_ATTACH_TIMEOUT,
        serviceName,
        NULL,
        U_SERVICE_NETWORKING,
        NULL);
    assert(service);
    /* Initialize configuration */
    config = in_configGetInstance();
    result = in_configConvertDomTree(config, uri, service);
    if(result == IN_RESULT_OK)
    {
        /* Ask service manager for splicedaemon state */
        serviceManager = u_serviceManagerNew(u_participant(service));

        admin = in_connectivityAdminGetInstance();
        /* Create the controller which starts the updating */
        controller = in_controllerNew(service);
        if (controller)
        {
            /* Start the actual engine */
            IN_REPORT_INFO(1, "DDSI networking started");
            IN_TRACE(Mainloop, 1, "DDSI networking started");
            in_controllerStart(controller);
            /* Change state for spliced */
            u_serviceChangeState(service, STATE_INITIALISING);
            u_serviceChangeState(service, STATE_OPERATIONAL);
            /* Get sleeptime from configuration */
            in_retrieveLeaseSettings(&leasePeriod, &sleepTime);

            u_serviceRenewLease(service, leasePeriod);
            /* Loop until termination is requested */
            u_serviceWatchSpliceDaemon(
                service,
                in_splicedaemonListener,
                &terminate);
            /* terminate flag is modified by the splice deamon listener thread*/
            while (!terminate)
            {
                /* Assert my liveliness and the Splicedaemon's liveliness */
                u_serviceRenewLease(service, leasePeriod);
                /* Wait before renewing again */
                os_nanoSleep(sleepTime);
            }
            leasePeriod.seconds = 20;
            u_serviceRenewLease(service, leasePeriod);
            u_serviceChangeState(service, STATE_TERMINATING);
            in_controllerStop(controller);
            in_controllerFree(controller);
            IN_REPORT_INFO(1, "DDSI networking stopped");
            IN_TRACE(Mainloop, 1, "DDSI networking stopped");
        }
        u_serviceChangeState(service, STATE_TERMINATED);
		u_serviceManagerFree(serviceManager);
		in_objectFree(in_object(admin));
    }
    /* Clean up */
    in_configFree(config);
    u_serviceFree(service);
}