Example #1
0
static in_connectivityPeerWriter
getPeerWriter(in_ddsiStreamReaderImpl _this,
        in_ddsiGuidPrefixRef guidPrefix,
        in_ddsiEntityId writerId)
{
    const in_ddsiGuidPrefix UNKNOWN_PREFIX =
        IN_GUIDPREFIX_UNKNOWN;
    OS_STRUCT(in_ddsiGuid) writerGuid;
    in_connectivityAdmin admin =
        in_connectivityAdminGetInstance();
    in_connectivityPeerWriter result = NULL;

    assert(admin);

    if (memcmp(UNKNOWN_PREFIX, guidPrefix, sizeof(UNKNOWN_PREFIX))==0) {
        IN_REPORT_WARNING(IN_SPOT, "guid prefix invalid");
    }

    if (writerId->entityKey[0] == 0 &&
            writerId->entityKey[1] == 0 &&
            writerId->entityKey[2] == 0 &&
            writerId->entityKind == 0) {
        IN_REPORT_WARNING(IN_SPOT, "writerId invalid");
    }

    in_ddsiGuidInit(
                &writerGuid,
                guidPrefix,
                writerId);

    result =
        in_connectivityAdminGetPeerWriter(admin, &writerGuid);

    return result;
}
Example #2
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);
}