Example #1
0
gapi_returnCode_t
_SubscriberFree (
    _Subscriber subscriber)
{
    gapi_returnCode_t result = GAPI_RETCODE_OK;
    _Status status;
    u_subscriber s;

    assert(subscriber);

    status = _EntityStatus(subscriber);
    _StatusSetListener(status, NULL, 0);

    _EntityClaim(status);
    _StatusDeinit(status);

    gapi_dataReaderQos_free(&subscriber->_defDataReaderQos);

    s = U_SUBSCRIBER_GET(subscriber);
    _EntityDispose(_Entity(subscriber));
    if (u_subscriberFree(s) != U_RESULT_OK) {
        result = GAPI_RETCODE_ERROR;
    }

    return result;
}
Example #2
0
gapi_returnCode_t
_PublisherFree (
    _Publisher _this)
{
    gapi_returnCode_t result = GAPI_RETCODE_OK;
    _Status status;
    u_publisher p;

    assert(_this);

    status = _EntityStatus(_this);
    _StatusSetListener(status, NULL, 0);

    _EntityClaim(status);
    _StatusDeinit(status);

    gapi_dataWriterQos_free(&_this->_defDataWriterQos);

    p = U_PUBLISHER_GET(_this);
    _EntityDispose (_Entity(_this));
    if (u_publisherFree(p) != U_RESULT_OK) {
        result = GAPI_RETCODE_ERROR;
    }

    return result;
}
_DataReader
_DataReaderViewDataReader (
    _DataReaderView dataReaderView)
{
    _DataReader datareader;
 
    datareader = dataReaderView->datareader;
    _EntityClaim(datareader);   
    return datareader;
}
Example #4
0
/*     Entity
 *     get_entity();
 */
gapi_entity
gapi_statusCondition_get_entity(
    gapi_statusCondition _this)
{
    _StatusCondition statuscondition;
    _Entity entity = NULL;

    statuscondition = gapi_statusConditionClaim(_this, NULL);
    if ( statuscondition != NULL ) {
        entity = _ConditionEntity(_Condition(statuscondition));
        _EntityClaim(entity);
    }
    _EntityRelease(statuscondition);

    return (gapi_entity)_EntityRelease(entity);
}
Example #5
0
/*     Topic
 *     get_topic();
 */
gapi_topic
gapi_dataWriter_get_topic (
    gapi_dataWriter _this)
{
    _DataWriter datawriter;
    _Topic topic = NULL;

    datawriter = gapi_dataWriterClaim(_this, NULL);

    if ( datawriter != NULL ) {
        topic = (_Topic)datawriter->topic;
        _EntityClaim(topic);
    }

    _EntityRelease(datawriter);

    return (gapi_topic)_EntityRelease(topic);
}
Example #6
0
void
_BuiltinSubscriberFree (
    _Subscriber subscriber)
{
    _Status status;

    assert(subscriber != NULL);

    status = _EntityStatus(subscriber);
    _StatusSetListener(status, NULL, 0);

    _EntityClaim(status);
    _StatusDeinit(status);

    u_subscriberFree(U_SUBSCRIBER_GET(subscriber));

    _EntityDispose(_Entity(subscriber));
}
Example #7
0
gapi_returnCode_t
_DataReaderFree (
    _DataReader _this)
{
    gapi_returnCode_t result = GAPI_RETCODE_OK;
    _Status status;
    u_dataReader r;

    assert(_this);

    /* The following refCount checking and destruction mechanism is not
     * bullet proof and may cause leakage.
     * This is a temporary situation during GAPI redesign and should be
     * resolved when the GAPI redesign is finished.
     */
    r = U_DATAREADER_GET(_this);
    _TopicDescriptionDecUse(_this->topicDescription);

    status = _EntityStatus(_this);

    _StatusSetListener(status, NULL, 0);

    _EntityClaim(status);
    _StatusDeinit(status);

    gapi_loanRegistry_free(_this->loanRegistry);

    /* Following the user layer reader object is deleted after the entity
     * dispose because it will otherwise lead to a double free of the user
     * layer reader.
     * This is caused by the status condition which is attached to an exiting
     * waitset and the fact that a status condition's user object is the user
     * layer reader.
     * This is a hack but besides of that the destruction of the user entity
     * should be part of the entity dispose method.
     * For now this works.
     */
    _EntityDispose(_Entity(_this));
    u_dataReaderFree(r);

    return result;
}
Example #8
0
gapi_boolean
_PublisherContainsEntity (
    _Publisher _this,
    gapi_instanceHandle_t handle)
{
    struct check_handle_arg arg;

    assert(_this);

    _EntityClaim(_this);

    arg.handle = handle;
    arg.result = FALSE;

    u_publisherWalkWriters(U_PUBLISHER_GET(_this),
                           (u_writerAction)check_handle,
                           (c_voidp)&arg);

    _EntityRelease(_this);

    return arg.result;
}
Example #9
0
gapi_boolean
_SubscriberContainsEntity (
    _Subscriber _this,
    gapi_instanceHandle_t handle)
{
    struct check_handle_arg arg;

    assert(_this);

    _EntityClaim(_this);

    arg.handle = handle;
    arg.result = FALSE;

    u_subscriberWalkReaders(U_SUBSCRIBER_GET(_this),
                           (u_readerAction)check_handle,
                           (c_voidp)&arg);

    _EntityRelease(_this);

    return arg.result;
}
Example #10
0
gapi_returnCode_t
_DataWriterFree (
    _DataWriter _this)
{
    gapi_returnCode_t result = GAPI_RETCODE_OK;
    _Status status;
    u_writer w;

    assert(_this);

    status = _EntityStatus(_this);
    _TopicDescriptionDecUse(_TopicDescription(_this->topic));

    _StatusSetListener(status, NULL, 0);

    _EntityClaim(status);
    _StatusDeinit(status);

    w = U_WRITER_GET(_this);
    _EntityDispose (_Entity(_this));
    u_writerFree(w);

    return result;
}