Esempio n. 1
0
c_char*
cmx_writerNew(
    const c_char* publisher,
    const c_char* name,
    const c_char* topic,
    const c_char* qos)
{
    u_publisher pub;
    u_topic top;
    u_writer wri;
    c_char* result;
    cmx_entityArg arg;
    u_result ur;
    cmx_entityKernelArg kernelArg;
    v_writerQos wQos;
    
    result = NULL;
    pub = u_publisher(cmx_entityUserEntity(publisher));
    
    if(pub != NULL){
        top = u_topic(cmx_entityUserEntity(topic));
        
        if(top != NULL){
            kernelArg = cmx_entityKernelArg(os_malloc(C_SIZEOF(cmx_entityKernelArg)));
            u_entityAction(u_entity(pub), cmx_entityKernelAction, (c_voidp)kernelArg);
            
            if(qos != NULL){
                wQos = v_writerQos(cmx_qosKernelQosFromKind(qos, K_WRITER, c_getBase(c_object(kernelArg->kernel))));
                
                if(wQos == NULL){
                    wQos = v_writerQosNew(kernelArg->kernel, NULL);
                    wQos->reliability.kind = V_RELIABILITY_RELIABLE;
                }
            } else {
                wQos = v_writerQosNew(kernelArg->kernel, NULL);
                wQos->reliability.kind = V_RELIABILITY_RELIABLE;
            }
            wri = u_writerNew(pub, name, top, NULL, wQos, TRUE);
            os_free(kernelArg);
            c_free(wQos);
            
            if(wri != NULL){
                cmx_registerEntity(u_entity(wri));
                arg = cmx_entityArg(os_malloc(C_SIZEOF(cmx_entityArg)));
                arg->entity = u_entity(wri);
                arg->create = FALSE;
                arg->participant = NULL;
                arg->result = NULL;
                ur = u_entityAction(u_entity(wri), cmx_entityNewFromAction, (c_voidp)(arg));
                
                if(ur == U_RESULT_OK){
                    result = arg->result;
                    os_free(arg);
                }
            }
        }
    }
    return result;
}
Esempio n. 2
0
const c_char*
cmx_dataReaderWaitForHistoricalData(
    const c_char* dataReader,
    const c_time timeout)
{
    u_result ur;
    const c_char* result;
    u_dataReader entity;

    entity = u_dataReader(cmx_entityUserEntity(dataReader));

    if(entity != NULL){
        ur = u_dataReaderWaitForHistoricalData(entity, timeout);

        if(ur == U_RESULT_OK){
            result = CMX_RESULT_OK;
        } else if(ur == U_RESULT_TIMEOUT){
            result = CMX_RESULT_TIMEOUT;
        } else {
            result = CMX_RESULT_FAILED;
        }
    } else {
        result = CMX_RESULT_ENTITY_NOT_AVAILABLE;
    }
    return result;
}
Esempio n. 3
0
c_char*
cmx_readerSnapshotNew(
    const c_char* reader)
{
    u_entity e;
    c_char* result;
    struct cmx_readerSnapshotArg arg;
    os_mutex m;
    
    arg.success = FALSE;
    result = NULL;
    e = cmx_entityUserEntity(reader);
    
    if(e != NULL){    
        u_entityAction(e, cmx_readerSnapshotNewAction, &arg);
        
        if(arg.success == TRUE){
            m = cmx_getReaderSnapshotMutex();
            os_mutexLock(&m);
            readerSnapshots = c_iterInsert(readerSnapshots, arg.snapshot);
            os_mutexUnlock(&m);
            
            result = (c_char*)(os_malloc(60));
            os_sprintf(result, "<readerSnapshot><id>"PA_ADDRFMT"</id></readerSnapshot>", (c_address)(arg.snapshot));
        }
    }
    return result;
}
Esempio n. 4
0
c_char*
cmx_serviceGetState(
    const c_char* service)
{
    u_entity uservice;
    u_result actionSuccess;
    cmx_entityArg arg;
    c_char* result;
    
    result = NULL;
    uservice = cmx_entityUserEntity(service);
    
    if(uservice != NULL){
        arg = cmx_entityArg(os_malloc(C_SIZEOF(cmx_entityArg)));
        arg->participant = u_entityParticipant(uservice);
        arg->create = FALSE;
        arg->result = NULL;
        arg->entity = NULL;
        
        actionSuccess = u_entityAction(uservice, cmx_serviceAction, arg);
        
        if(actionSuccess == U_RESULT_OK){
            result = arg->result;
            os_free(arg);
        }
    }
    return result;
}
Esempio n. 5
0
c_char*
cmx_publisherNew(
    const c_char* participant,
    const c_char* name,
    const c_char* qos)
{
    u_participant par;
    u_publisher pub;
    c_char* result;
    cmx_entityArg arg;
    u_result ur;
    v_publisherQos pqos;
    cmx_entityKernelArg kernelArg;

    result = NULL;    
    par = u_participant(cmx_entityUserEntity(participant));
    
    if(par != NULL){
        kernelArg = cmx_entityKernelArg(os_malloc(C_SIZEOF(cmx_entityKernelArg)));
        u_entityAction(u_entity(par), cmx_entityKernelAction, (c_voidp)kernelArg);
        
        if(qos != NULL){
            pqos = v_publisherQos(cmx_qosKernelQosFromKind(qos, K_PUBLISHER, c_getBase(c_object(kernelArg->kernel))));
            
            if(pqos == NULL){
                pqos = v_publisherQosNew(kernelArg->kernel, NULL);
            }
        } else {
            pqos = v_publisherQosNew(kernelArg->kernel, NULL);
        } 
        pub = u_publisherNew(par, name, pqos, TRUE);
        os_free(kernelArg);
        c_free(pqos);
        
        if(pub != NULL){
            cmx_registerEntity(u_entity(pub));
            arg = cmx_entityArg(os_malloc(C_SIZEOF(cmx_entityArg)));
            arg->entity = u_entity(pub);
            arg->create = FALSE;
            arg->participant = NULL;
            arg->result = NULL;
            ur = u_entityAction(u_entity(pub), cmx_entityNewFromAction, (c_voidp)(arg));
            
            if(ur == U_RESULT_OK){
                result = arg->result;
                os_free(arg);
            }
        }
    }
    return result;
}
Esempio n. 6
0
c_char*
cmx_readerDataType(
    const c_char* reader)
{
    u_entity entity;
    struct cmx_readerArg arg;

    entity = cmx_entityUserEntity(reader);
    arg.result = NULL;

    if(entity != NULL){
        u_entityAction(entity, cmx_readerDataTypeAction, &arg);
    }
    return arg.result;
}
Esempio n. 7
0
const c_char*
cmx_serviceSetState(
    const c_char* service,
    const c_char* state)
{
    const c_char* result;
    u_entity uservice;
    uservice = cmx_entityUserEntity(service);
    result = CMX_RESULT_FAILED;
    
    if(uservice != NULL){
        /*@todo TODO: Implement state change.*/
        result = CMX_RESULT_OK;
    }
    return result;
}
Esempio n. 8
0
c_char*
cmx_readerTake(
    const c_char* reader)
{
    u_reader ureader;
    struct cmx_readerArg arg;

    arg.result = NULL;

    ureader = u_reader(cmx_entityUserEntity(reader));

    if(ureader != NULL){
        u_readerTake(ureader, cmx_readerCopy, &arg);
    }
    return arg.result;
}
Esempio n. 9
0
c_char*
cmx_readerRead(
    const c_char* reader)
{
    u_reader ureader;
    c_bool result;
    struct cmx_readerArg arg;
    
    ureader = u_reader(cmx_entityUserEntity(reader));
    arg.result = NULL;
    
    if(ureader != NULL){
        result = u_readerRead(ureader, cmx_readerReadCopy, &arg);
    }
    return arg.result;
}
Esempio n. 10
0
c_char*
cmx_writerDataType(
    const c_char* writer)
{
    u_entity entity;
    c_bool result;
    c_char* type;
    struct cmx_writerTypeArg arg;
    
    type = NULL;
    entity = cmx_entityUserEntity(writer);
    arg.result = NULL;
    
    if(entity != NULL){
        result = u_entityAction(entity, cmx_writerDataTypeAction, &arg);
    }
    return arg.result;
}
Esempio n. 11
0
const c_char*
cmx_writerUnregister(
    const c_char* writer, 
    const c_char* data)
{
    u_entity entity;
    c_bool result;
    c_char* type;
    struct cmx_writerArg arg;
    
    type = NULL;
    entity = cmx_entityUserEntity(writer);
    arg.result = data;

    if(entity != NULL){
        result = u_entityAction(entity, cmx_writerUnregisterCopy, &arg);
    }
    return arg.success;
}
Esempio n. 12
0
c_char*
cmx_queryNew(
    const c_char* reader,
    const c_char* name,
    const c_char* expression)
{
    u_reader rea;
    u_query que;
    q_expr qexpr;
    c_char* result;
    cmx_entityArg arg;
    u_result ur;

    result = NULL;    
    rea = u_reader(cmx_entityUserEntity(reader));
    
    if(rea != NULL){
        qexpr = q_parse(expression);
        
        if(qexpr != NULL){
            que = u_queryNew(rea, name, qexpr, NULL);
            q_dispose(qexpr);
        
            if(que != NULL){
                cmx_registerEntity(u_entity(que));
                arg = cmx_entityArg(os_malloc(C_SIZEOF(cmx_entityArg)));
                arg->entity = u_entity(que);
                arg->create = FALSE;
                arg->participant = NULL;
                arg->result = NULL;
                ur = u_entityAction(u_entity(que),
                                    cmx_entityNewFromAction,
                                    (c_voidp)(arg));
                
                if(ur == U_RESULT_OK){
                    result = arg->result;
                    os_free(arg);
                }
            }
        }
    }
    return result;
}
Esempio n. 13
0
const c_char*
cmx_publisherPublish(
    const c_char* publisher,
    const c_char* domainExpr)
{
    u_publisher pub;
    u_result ur;
    const c_char* result;
    
    pub = u_publisher(cmx_entityUserEntity(publisher));
    
    if(pub != NULL){
        ur = u_publisherPublish(pub, domainExpr);
        
        if(ur == U_RESULT_OK){
            result = CMX_RESULT_OK;
        } else {
            result = CMX_RESULT_FAILED;
        }
    } else {
        result = CMX_RESULT_FAILED;
    }
    return result;
}
Esempio n. 14
0
c_char*
cmx_dataReaderNew(
    const c_char* subscriber,
    const c_char* name,
    const c_char* view,
    const c_char* qos)
{
    u_subscriber sub;
    u_dataReader rea;
    c_char* result;
    cmx_entityArg arg;
    u_result ur;
    cmx_entityKernelArg kernelArg;
    v_readerQos rqos;
    q_expr qexpr;

    result = NULL;
    sub = u_subscriber(cmx_entityUserEntity(subscriber));

    if(sub != NULL){
        kernelArg = cmx_entityKernelArg(os_malloc(C_SIZEOF(cmx_entityKernelArg)));
        u_entityAction(u_entity(sub),
                       cmx_entityKernelAction,
                       (c_voidp)kernelArg);

        if(qos != NULL){
            rqos = v_readerQos(cmx_qosKernelQosFromKind(qos, K_DATAREADER, c_getBase(c_object(kernelArg->kernel))));

            if(rqos == NULL){
                rqos = v_readerQosNew(kernelArg->kernel, NULL);
            }
        } else {
            rqos = v_readerQosNew(kernelArg->kernel, NULL);
        }
        if(view != NULL){
            qexpr = q_parse(view);

            if(qexpr != NULL){
                rea = u_dataReaderNew(sub, name,  qexpr, NULL, rqos, TRUE);
                q_dispose(qexpr);
            } else {
                rea = NULL;
                OS_REPORT(OS_ERROR, CM_XML_CONTEXT, 0,
                    "cmx_dataReaderNew: invalid view expression.");
            }
        } else {
            rea = u_dataReaderNew(sub, name,  NULL, NULL, rqos, TRUE);
        }
        c_free(rqos);
        os_free(kernelArg);

        if(rea != NULL){
            cmx_registerEntity(u_entity(rea));
            arg = cmx_entityArg(os_malloc((os_uint32)(C_SIZEOF(cmx_entityArg))));
            arg->entity = u_entity(rea);
            arg->create = FALSE;
            arg->participant = NULL;
            arg->result = NULL;
            ur = u_entityAction(u_entity(rea),
                                cmx_entityNewFromAction,
                                (c_voidp)(arg));

            if(ur == U_RESULT_OK){
                result = arg->result;
                os_free(arg);
            }
        }
    }
    return result;
}