Пример #1
0
FudgeStatus FudgeMsgEnvelope_create ( FudgeMsgEnvelope * envelopeptr,
                                   fudge_byte directives,
                                   fudge_byte schemaversion,
                                   fudge_i16 taxonomy,
                                   FudgeMsg message )
{
    FudgeStatus status;

    if ( ! ( *envelopeptr = FUDGEMEMORY_MALLOC( FudgeMsgEnvelope, sizeof ( struct FudgeMsgEnvelopeImpl ) ) ) )
        return FUDGE_OUT_OF_MEMORY;

    if ( ( status = FudgeRefCount_create ( &( ( *envelopeptr )->refcount ) ) ) != FUDGE_OK )
        goto release_and_fail;

    if ( ( status = FudgeMsg_retain ( message ) ) != FUDGE_OK )
        goto release_and_fail;

    ( *envelopeptr )->directives = directives;
    ( *envelopeptr )->schemaversion = schemaversion;
    ( *envelopeptr )->taxonomy = taxonomy;
    ( *envelopeptr )->message = message;

    return FUDGE_OK;

release_and_fail:
    FUDGEMEMORY_FREE( *envelopeptr );
    return status;
}
Пример #2
0
FudgeStatus FudgeMsg_create ( FudgeMsg * messageptr )
{
    FudgeStatus status;

    if ( ! ( *messageptr = ( FudgeMsg ) malloc ( sizeof ( struct FudgeMsgImpl ) ) ) )
        return FUDGE_OUT_OF_MEMORY;

    if ( ( status = FudgeRefCount_create ( &( ( *messageptr )->refcount ) ) ) != FUDGE_OK )
    {
        free ( *messageptr );
        return status;
    }

    ( *messageptr )->fieldhead = 0;
    ( *messageptr )->fieldtail = 0;
    ( *messageptr )->numfields = 0ul;
    ( *messageptr )->width = -1;

    return FUDGE_OK;
}