Пример #1
0
/* InstanceHandle_t
 * lookup_instance(
 *     in Data instance);
 */
gapi_instanceHandle_t
gapi_fooDataReaderView_lookup_instance (
    gapi_fooDataReaderView _this,
    const gapi_foo *instance_data)
{
    _DataReaderView datareaderview;
    gapi_instanceHandle_t handle = GAPI_HANDLE_NIL;

    datareaderview = gapi_dataReaderViewClaim(_this, NULL);
    if ( datareaderview && instance_data ) {
        readerViewCopyInInfo rData;
        u_result uResult;

        rData.reader = datareaderview->datareader;
        rData.data = (void *)instance_data;

        uResult = u_dataViewLookupInstance(
                      U_DATAREADERVIEW_GET(datareaderview),
                      &rData,
                      _DataReaderViewCopyIn,
                      &handle);
    }
    _EntityRelease(datareaderview);

    return handle;
}
Пример #2
0
static gapi_boolean
initViewQuery (
    _DataReaderView dataReaderView)
{
    gapi_boolean result = FALSE;
    gapi_expression expr;
    u_dataView uReaderView;
    
    dataReaderView->reader_mask.sampleStateMask   = (c_long)0;
    dataReaderView->reader_mask.viewStateMask     = (c_long)0;
    dataReaderView->reader_mask.instanceStateMask = (c_long)0;
    
    uReaderView = u_dataView(U_DATAREADERVIEW_GET(dataReaderView));
    expr = gapi_createReadExpression(u_entity(uReaderView),
                                     &dataReaderView->reader_mask);
    if ( expr != NULL ) {
        dataReaderView->uQuery = gapi_expressionCreateQuery(expr,
                                                            u_reader(uReaderView),
                                                            NULL,
                                                            NULL);
        gapi_expressionFree(expr);
        if ( dataReaderView->uQuery ) {
            result = TRUE;
        }
    }
    return result;
}
Пример #3
0
gapi_returnCode_t
_DataReaderViewFree (
    _DataReaderView dataReaderView)
{
    gapi_returnCode_t result = GAPI_RETCODE_OK;
    u_dataView v;
    assert(dataReaderView);
    
    u_queryFree(dataReaderView->uQuery);
    
    gapi_loanRegistry_free(dataReaderView->loanRegistry);

    v = U_DATAREADERVIEW_GET(dataReaderView);
    _EntityDispose (_Entity(dataReaderView));
    u_dataViewFree(v);

    return result;
}
Пример #4
0
gapi_dataReaderViewQos *
_DataReaderViewGetQos (
    _DataReaderView dataReaderView,
    gapi_dataReaderViewQos * qos)
{
    v_dataViewQos dataViewQos;
    u_dataView uDataView;
    
    assert(dataReaderView);

    uDataView = u_dataView(U_DATAREADERVIEW_GET(dataReaderView));
        
    if ( u_entityQoS(u_entity(uDataView), (v_qos*)&dataViewQos) == U_RESULT_OK ) {
        copyReaderViewQosOut(dataViewQos,  qos);
        u_dataViewQosFree(dataViewQos);
    }

    return qos;
}
Пример #5
0
gapi_returnCode_t
gapi_dataReader_delete_view (
    gapi_dataReader _this,
    gapi_dataReaderView a_view)
{
    gapi_returnCode_t result = GAPI_RETCODE_OK;
    _DataReader datareader;
    _DataReaderView view = NULL;
    c_bool contains;

    gapi_context context;

    GAPI_CONTEXT_SET(context, _this, GAPI_METHOD_DELETE_DATAREADER);

    datareader = gapi_dataReaderClaim(_this, &result);

    if ( datareader != NULL ) {
        view = gapi_dataReaderViewClaim(a_view, NULL);
        if ( view != NULL ) {
            contains = u_dataReaderContainsView(U_DATAREADER_GET(datareader),
                                                U_DATAREADERVIEW_GET(view));
            if (contains) {
                if (_DataReaderViewPrepareDelete(view,&context)) {
                    _DataReaderViewFree(view);
                    view = NULL;
                } else {
                    result = GAPI_RETCODE_PRECONDITION_NOT_MET;
                }
            } else {
                result = GAPI_RETCODE_PRECONDITION_NOT_MET;
            }
            _EntityRelease(view);
        } else {
            result = GAPI_RETCODE_BAD_PARAMETER;
        }
        _EntityRelease(datareader);
    } else {
        result = GAPI_RETCODE_ALREADY_DELETED;
    }
    return result;
}
Пример #6
0
gapi_returnCode_t
gapi_fooDataReaderView_take_next_instance (
    gapi_fooDataReaderView _this,
    void *data_values,
    void *info_data,
    const gapi_long max_samples,
    const gapi_instanceHandle_t a_handle,
    const gapi_sampleStateMask sample_states,
    const gapi_viewStateMask view_states,
    const gapi_instanceStateMask instance_states)
{
    _DataReaderView     datareaderview;
    gapi_returnCode_t   result = GAPI_RETCODE_OK;
    gapi_readerInfo     readerInfo;
    u_reader            reader;
    v_readerSampleSeq   samples;
    v_readerSample      buffer[V_DATAREADERSAMPLESEQ_INITIAL];
    readerViewActionArg arg;
    u_result            uResult;

    assert(data_values);
    assert(info_data);
    assert(max_samples >= -1 );

    datareaderview = gapi_dataReaderViewClaim(_this, &result);

    if (datareaderview == NULL ) {
        return result;
    } else if (!gapi_stateMasksValid(sample_states, view_states, instance_states)) {
        result = GAPI_RETCODE_BAD_PARAMETER;
    } else if (statemasks_unsupported(sample_states,view_states,instance_states)) {
        result = GAPI_RETCODE_UNSUPPORTED;
    } else if (max_samples == 0) {
        result = GAPI_RETCODE_NO_DATA;
    } else {
        reader = u_reader(U_DATAREADERVIEW_GET(datareaderview));
        datareaderview->reader_mask.sampleStateMask = sample_states;
        datareaderview->reader_mask.viewStateMask = view_states;
        datareaderview->reader_mask.instanceStateMask = instance_states;

        readerInfo.max_samples    = (gapi_unsigned_long)max_samples;
        readerInfo.num_samples    = 0U;
        readerInfo.data_buffer    = data_values;
        readerInfo.info_buffer    = info_data;
        readerInfo.alloc_size     = datareaderview->datareader->allocSize;
        readerInfo.alloc_buffer   = datareaderview->datareader->allocBuffer;
        readerInfo.copy_out       = datareaderview->datareader->copy_out;
        readerInfo.copy_cache     = datareaderview->datareader->copy_cache;
        readerInfo.loan_registry  = (void**)&datareaderview->loanRegistry;

        samples._length  = 0;
        samples._maximum = V_DATAREADERSAMPLESEQ_INITIAL;
        samples._buffer  = buffer;
        samples._release = FALSE;

        arg.samples        = &samples;
        arg.max            = (gapi_unsigned_long)max_samples;
        arg.datareaderview = datareaderview;
        arg.readerInfo     = &readerInfo;
        arg.readerCopy     = datareaderview->datareader->readerCopy;
        arg.result         = GAPI_RETCODE_OK;

        uResult = u_readerTakeNextInstance(reader,a_handle,readerActionView,(c_voidp)&arg);
        result = kernelResultToApiResult(uResult);

        if ( result == GAPI_RETCODE_OK ) {
            result = arg.result;
        }
        v_readerSampleSeq_freebuf(&samples);
    }

    _EntityRelease(datareaderview);

    return result;
}
Пример #7
0
u_dataView
_DataReaderViewUreaderView (
    _DataReaderView dataReaderView)
{
    return U_DATAREADERVIEW_GET(dataReaderView);
}