Ack.

Thanks,
Ramesh.

On 5/22/2014 6:28 PM, Hans Feldt wrote:
>   osaf/libs/core/include/ncsencdec_pub.h |  110 +++++++++++--------------
>   osaf/libs/core/leap/hj_enc.c           |  144 
> ++++++++++++++++++++++++++++----
>   2 files changed, 171 insertions(+), 83 deletions(-)
>
>
> Services not using EDU ends repeating functionality that should be common.
> This patch proposes a set of functions that makes it easy to removed use of 
> EDU.
> Functions for certain data types are missing but would be easy to add as 
> needed.
>
> diff --git a/osaf/libs/core/include/ncsencdec_pub.h 
> b/osaf/libs/core/include/ncsencdec_pub.h
> --- a/osaf/libs/core/include/ncsencdec_pub.h
> +++ b/osaf/libs/core/include/ncsencdec_pub.h
> @@ -1,6 +1,6 @@
>   /*      -*- OpenSAF  -*-
>    *
> - * (C) Copyright 2008 The OpenSAF Foundation
> + * (C) Copyright 2008-2014 The OpenSAF Foundation
>    *
>    * This program is distributed in the hope that it will be useful, but
>    * WITHOUT ANY WARRANTY; without even the implied warranty of 
> MERCHANTABILITY
> @@ -11,7 +11,7 @@
>    * See the Copying file included with the OpenSAF distribution for full
>    * licensing terms.
>    *
> - * Author(s): Emerson Network Power
> + * Author(s): Emerson Network Power, Ericsson
>    *
>    */
>   
> @@ -92,6 +92,8 @@
>   
>   #include "ncsgl_defs.h"
>   #include "ncs_osprm.h"
> +#include <saAis.h>
> +#include <ncs_ubaid.h>
>   #include "ncsusrbuf.h"
>   #include "ncs_svd.h"
>   
> @@ -102,84 +104,68 @@ extern "C" {
>   /*
>    * NCS_ENC encode functions
>    */
> -     USRBUF *ncs_encode_n_octets(USRBUF *, uint8_t *, unsigned int);
> -     USRBUF *ncs_encode_uns8(USRBUF *u, uint8_t val8);
> -     USRBUF *ncs_encode_uns16(USRBUF *u, uint16_t val16);
> -     USRBUF *ncs_encode_uns32(USRBUF *u, uint32_t val32);
> -     USRBUF *ncs_encode_uns64(USRBUF *u, uint64_t val64);
> -     USRBUF *ncs_prepend_n_octets(USRBUF *pbuf, uint8_t *os, unsigned int);
> -     USRBUF *ncs_prepend_uns16(USRBUF *u, uint16_t);
> -     USRBUF *ncs_prepend_uns32(USRBUF *u, uint32_t);
> -     USRBUF *ncs_prepend_uns64(USRBUF *u, uint64_t);
> -     USRBUF *ncs_encode_float(USRBUF *u, float obj_val);
> +USRBUF *ncs_encode_n_octets(USRBUF *, uint8_t *, unsigned int);
> +USRBUF *ncs_encode_uns8(USRBUF *u, uint8_t val8);
> +USRBUF *ncs_encode_uns16(USRBUF *u, uint16_t val16);
> +USRBUF *ncs_encode_uns32(USRBUF *u, uint32_t val32);
> +USRBUF *ncs_encode_uns64(USRBUF *u, uint64_t val64);
> +USRBUF *ncs_prepend_n_octets(USRBUF *pbuf, uint8_t *os, unsigned int);
> +USRBUF *ncs_prepend_uns16(USRBUF *u, uint16_t);
> +USRBUF *ncs_prepend_uns32(USRBUF *u, uint32_t);
> +USRBUF *ncs_prepend_uns64(USRBUF *u, uint64_t);
> +USRBUF *ncs_encode_float(USRBUF *u, float obj_val);
>   
> -     uint64_t ncs_encode_64bit(uint8_t **stream, uint64_t);
> -     uint32_t ncs_encode_32bit(uint8_t **stream, uint32_t);
> -     uint32_t ncs_encode_24bit(uint8_t **stream, uint32_t);
> -     uint32_t ncs_encode_16bit(uint8_t **stream, uint32_t);
> -     uint32_t ncs_encode_8bit(uint8_t **stream, uint32_t);
> -     uint32_t ncs_encode_key(uint8_t **stream, NCS_KEY *key);
> -
> -     uint32_t ncs_encode_octets(uint8_t **stream, uint8_t *val, uint32_t 
> count);
> +uint64_t ncs_encode_64bit(uint8_t **stream, uint64_t);
> +uint32_t ncs_encode_32bit(uint8_t **stream, uint32_t);
> +uint32_t ncs_encode_24bit(uint8_t **stream, uint32_t);
> +uint32_t ncs_encode_16bit(uint8_t **stream, uint32_t);
> +uint32_t ncs_encode_8bit(uint8_t **stream, uint32_t);
> +uint32_t ncs_encode_key(uint8_t **stream, NCS_KEY *key);
> +uint32_t ncs_encode_octets(uint8_t **stream, uint8_t *val, uint32_t count);
>   
>   /*
>    * NCS_DEC decode functions
>    */
> -     USRBUF *ncs_decode_n_octets(USRBUF *, uint8_t *, uint32_t);
> +USRBUF *ncs_decode_n_octets(USRBUF *, uint8_t *, uint32_t);
>   
> -     USRBUF *ncs_skip_n_octets(USRBUF *, uint32_t);
> -     uint8_t *ncs_flatten_n_octets(USRBUF *u, uint8_t *os, uint32_t count);
> +USRBUF *ncs_skip_n_octets(USRBUF *, uint32_t);
> +uint8_t *ncs_flatten_n_octets(USRBUF *u, uint8_t *os, uint32_t count);
>   
> -     uint32_t ncs_decode_short(uint8_t **stream);
> -     uint32_t ncs_decode_24bit(uint8_t **stream);
> -     uint32_t ncs_decode_32bit(uint8_t **stream);
> -     uint16_t ncs_decode_16bit(uint8_t **stream);
> -     uint64_t ncs_decode_64bit(uint8_t **stream);
> -     uint8_t ncs_decode_8bit(uint8_t **stream);
> -     uint32_t ncs_decode_key(uint8_t **stream, NCS_KEY *key);
> +uint32_t ncs_decode_short(uint8_t **stream);
> +uint32_t ncs_decode_24bit(uint8_t **stream);
> +uint32_t ncs_decode_32bit(uint8_t **stream);
> +uint16_t ncs_decode_16bit(uint8_t **stream);
> +uint64_t ncs_decode_64bit(uint8_t **stream);
> +uint8_t ncs_decode_8bit(uint8_t **stream);
> +uint32_t ncs_decode_key(uint8_t **stream, NCS_KEY *key);
> +float ncs_decode_float(uint8_t **stream);
>   
> -     float ncs_decode_float(uint8_t **stream);
> -
> -/*****************************************************************************
> - * STRUCTURE NAME:     USRFRAME
> - *
> - * DESCRIPTION:        This structure is an alternative to the userbuf
> - *                     for passing data across the sysf_ip interface.
> - * NOTES:
> - * Header goes from *bufp to *(bufp+header_len-1)
> - * data goes from *(bufp+header_len) to *(bufp+len-1)
> - *
> - * This used to be located in ncs_ip.h.  The USRFRAME is used outside of
> - * sysf_ip and hence, must be located outside of ncs_ip.h
> - *
> - 
> ****************************************************************************/
> -     typedef struct {
> -             unsigned int header_len;        /* header length */
> -             unsigned int len;       /* length of entire frame including 
> header */
> -             char *bufp;     /* ptr to a (flat) buffer containing the frame 
> */
> -     } USRFRAME;
> +/***** new style (2014) encoding/decoding functions follows ******/
> +void osaf_encode_uint8(NCS_UBAID *ub, uint8_t value);
> +void osaf_decode_uint8(NCS_UBAID *ub, uint8_t *to);
> +void osaf_encode_uint16(NCS_UBAID *ub, uint16_t value);
> +void osaf_decode_uint16(NCS_UBAID *ub, uint16_t *to);
> +void osaf_encode_uint32(NCS_UBAID *ub, uint32_t value);
> +void osaf_decode_uint32(NCS_UBAID *ub, uint32_t *to);
> +void osaf_decode_int(NCS_UBAID *ub, int *to);
> +void osaf_encode_uint64(NCS_UBAID *ub, uint64_t value);
> +void osaf_decode_uint64(NCS_UBAID *ub, uint64_t *to);
> +void osaf_encode_sanamet(NCS_UBAID *ub, const SaNameT *name);
> +void osaf_decode_sanamet(NCS_UBAID *ub, SaNameT *name);
> +void osaf_encode_satimet(NCS_UBAID *ub, SaTimeT time);
> +void osaf_decode_satimet(NCS_UBAID *ub, SaTimeT *time);
> +void osaf_encode_bool(NCS_UBAID *ub, bool value);
> +void osaf_decode_bool(NCS_UBAID *ub, bool *to);
>   
>   /* encode float */
> -#if defined(__NCSINC_PSOS__)
>   #define m_NCS_ENCODE_FLOAT(f, enc) {\
>             *((uint32_t *)(enc)) = htonl(*((uint32_t *)&(f))); \
>            }
> -#else
> -#define m_NCS_ENCODE_FLOAT(f, enc) {\
> -          *((uint32_t *)(enc)) = htonl(*((uint32_t *)&(f))); \
> -         }
> -#endif
>   
>   /* decode float */
> -#if defined(__NCSINC_PSOS__)
>   #define m_NCS_DECODE_FLOAT(n, dec) {\
>             *((uint32_t *) (dec)) = (n); \
>            }
> -#else
> -#define m_NCS_DECODE_FLOAT(n, dec) {\
> -          *((uint32_t *) (dec)) = (n); \
> -         }
> -#endif
>   
>   #ifdef  __cplusplus
>   }
> diff --git a/osaf/libs/core/leap/hj_enc.c b/osaf/libs/core/leap/hj_enc.c
> --- a/osaf/libs/core/leap/hj_enc.c
> +++ b/osaf/libs/core/leap/hj_enc.c
> @@ -1,6 +1,6 @@
>   /*      -*- OpenSAF  -*-
>    *
> - * (C) Copyright 2008 The OpenSAF Foundation
> + * (C) Copyright 2008-2014 The OpenSAF Foundation
>    *
>    * This program is distributed in the hope that it will be useful, but
>    * WITHOUT ANY WARRANTY; without even the implied warranty of 
> MERCHANTABILITY
> @@ -11,7 +11,7 @@
>    * See the Copying file included with the OpenSAF distribution for full
>    * licensing terms.
>    *
> - * Author(s): Emerson Network Power
> + * Author(s): Emerson Network Power, Ericsson
>    *
>    */
>   
> @@ -39,25 +39,6 @@
>   
>   
> ..............................................................................
>   
> -  FUNCTIONS INCLUDED in this module:
> -
> -The following set does buffer chaining management
> -  ncs_encode_n_octets....Encode "n" octets in the control frame
> -  ncs_encode_uint16_t   ....Encode short
> -  ncs_encode_uint32_t   ....Encode long
> -  ncs_encode_uint64_t   ....Encode long long
> -  ncs_prepend_n_octets...Encode "n" octets encapsulating given frame
> -  ncs_prepend_uint16_t   ...Encode 16 bit unsigned encapsulating given frame
> -  ncs_prepend_uint32_t   ...Encode 32 bit unsigned encapsulating given frame
> -  ncs_prepend_uint64_t   ...Encode 64 bit unsigned encapsulating given frame
> -
> -The following set does NOT do buffer chaining management
> -  ncs_encode_64bit   ....Encode 64 bits of a 64 bit value
> -  ncs_encode_32bit   ....Encode 32 bits of a 32 bit value
> -  ncs_encode_24bit   ....Encode 24 least significant octets of a 32 bit value
> -  ncs_encode_16bit   ....Encode 16 least significant octets of a 32 bit value
> -  ncs_encode_8bit    ....Encode  8 least significant octets of a 32 bit value
> -  ncs_encode_octets  ....Encode "n" octets encapsulating given frame
>   
>   
> *******************************************************************************
>   */
> @@ -310,3 +291,124 @@ uint32_t ncs_encode_octets(uint8_t **str
>               *(*stream)++ = *val++;
>       return count;
>   }
> +
> +/***** new style (2014) encoding/decoding functions follows ******/
> +
> +static uint8_t *encode_reserve_space(NCS_UBAID *ub, int32_t count)
> +{
> +    uint8_t *p8 = ncs_enc_reserve_space(ub, count);
> +    osafassert(p8);
> +    return p8;
> +}
> +
> +static uint8_t *decode_flatten_space(NCS_UBAID *uba, uint8_t *os, int32_t 
> count)
> +{
> +     uint8_t *p8 = ncs_dec_flatten_space(uba, os, count);
> +     osafassert(p8);
> +     return p8;
> +}
> +
> +void osaf_encode_uint8(NCS_UBAID *ub, uint8_t value)
> +{
> +     uint8_t *p8 = encode_reserve_space(ub, 1);
> +     ncs_encode_8bit(&p8, value);
> +     ncs_enc_claim_space(ub, 1);
> +}
> +
> +void osaf_decode_uint8(NCS_UBAID *ub, uint8_t *to)
> +{
> +     uint8_t buf[1];
> +
> +     uint8_t *p8 = decode_flatten_space(ub, buf, 1);
> +     *to = ncs_decode_8bit(&p8);
> +     ncs_dec_skip_space(ub, 1);
> +}
> +
> +void osaf_encode_uint16(NCS_UBAID *ub, uint16_t value)
> +{
> +     uint8_t *p8 = encode_reserve_space(ub, 2);
> +     ncs_encode_16bit(&p8, value);
> +     ncs_enc_claim_space(ub, 2);
> +}
> +
> +void osaf_decode_uint16(NCS_UBAID *ub, uint16_t *to)
> +{
> +     uint8_t buf[2];
> +
> +     uint8_t *p8 = decode_flatten_space(ub, buf, 2);
> +     *to = ncs_decode_16bit(&p8);
> +     ncs_dec_skip_space(ub, 2);
> +}
> +
> +void osaf_encode_uint32(NCS_UBAID *ub, uint32_t value)
> +{
> +     uint8_t *p8 = encode_reserve_space(ub, 4);
> +     ncs_encode_32bit(&p8, value);
> +     ncs_enc_claim_space(ub, 4);
> +}
> +
> +void osaf_decode_uint32(NCS_UBAID *ub, uint32_t *to)
> +{
> +     uint8_t buf[4];
> +
> +     uint8_t *p8 = decode_flatten_space(ub, buf, 4);
> +     *to = ncs_decode_32bit(&p8);
> +     ncs_dec_skip_space(ub, 4);
> +}
> +
> +void osaf_encode_uint64(NCS_UBAID *ub, uint64_t value)
> +{
> +     uint8_t *p8 = encode_reserve_space(ub, 8);
> +     ncs_encode_64bit(&p8, value);
> +     ncs_enc_claim_space(ub, 8);
> +}
> +
> +void osaf_decode_uint64(NCS_UBAID *ub, uint64_t *to)
> +{
> +     uint8_t buf[8];
> +
> +     uint8_t *p8 = decode_flatten_space(ub, buf, 8);
> +     *to = ncs_decode_64bit(&p8);
> +     ncs_dec_skip_space(ub, 8);
> +}
> +
> +void osaf_encode_sanamet(NCS_UBAID *ub, const SaNameT *name)
> +{
> +     int i;
> +     osaf_encode_uint16(ub, name->length);
> +     for (i = 0; i < SA_MAX_NAME_LENGTH; i++)
> +             osaf_encode_uint8(ub, name->value[i]);
> +}
> +
> +void osaf_decode_sanamet(NCS_UBAID *ub, SaNameT *name)
> +{
> +     int i;
> +     osaf_decode_uint16(ub, &name->length);
> +     for (i = 0; i < SA_MAX_NAME_LENGTH; i++)
> +             osaf_decode_uint8(ub, &name->value[i]);
> +}
> +
> +void osaf_encode_satimet(NCS_UBAID *ub, SaTimeT time)
> +{
> +     osaf_encode_uint64(ub, time);
> +}
> +
> +void osaf_decode_satimet(NCS_UBAID *ub, SaTimeT *time)
> +{
> +     osaf_decode_uint64(ub, (uint64_t*)time);
> +}
> +
> +void osaf_encode_bool(NCS_UBAID *ub, bool value)
> +{
> +     // for backwards compatibility reasons a bool is encoded as 4 bytes
> +     uint32_t tmp = value;
> +     osaf_encode_uint32(ub, tmp);
> +}
> +
> +void osaf_decode_bool(NCS_UBAID *ub, bool *to)
> +{
> +     uint32_t value;
> +     osaf_decode_uint32(ub, &value);
> +     *to = (bool)value;
> +}
> +


------------------------------------------------------------------------------
"Accelerate Dev Cycles with Automated Cross-Browser Testing - For FREE
Instantly run your Selenium tests across 300+ browser/OS combos.
Get unparalleled scalability from the best Selenium testing platform available
Simple to use. Nothing to install. Get started now for free."
http://p.sf.net/sfu/SauceLabs
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to