00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef _SDNV_H_
00018 #define _SDNV_H_
00019
00020 #include <oasys/compat/inttypes.h>
00021
00022 #ifdef __cplusplus
00023
00024 namespace dtn {
00025
00043 class SDNV {
00044 public:
00049 static const size_t MAX_LENGTH = 10;
00050
00054 static size_t encoding_len(u_int64_t val);
00055
00061 static int encode(u_int64_t val, u_char* bp, size_t len);
00062
00069 static int decode(const u_char* bp, size_t len, u_int64_t* val);
00070
00077 static int decode(const u_char* bp, size_t len, u_int32_t* val)
00078 {
00079 u_int64_t lval;
00080 int ret = decode(bp, len, &lval);
00081
00082 if (lval > 0xffffffffLL) {
00083 return -1;
00084 }
00085
00086 *val = (u_int32_t)lval;
00087
00088 return ret;
00089 }
00090 };
00091
00092 }
00093
00094 #endif
00095
00096 #endif