FluentLogger: fluent-logger-mbed A structured logger for Fluentd (mbed)

Dependents:   FluentLogger_Hello SNIC-FluentLogger-example

FluentLogger

Fluentd Logo

What is this ?

You can logging to Fluentd server.
This library included subset of MassagePack library.

Supported MessagePack formats(encode only)

format namefirst byte (in hex)
positive fixint0x00 - 0x7f
fixmap0x80 - 0x8f
fixarray0x90 - 0x9f
fixstr0xa0 - 0xbf
nil0xc0
false0xc2
true0xc3
float 320xca
float 640xcb
uint 80xcc
uint 160xcd
uint 320xce
uint 640xcf
int 80xd0
int 160xd1
int 320xd2
int 640xd3
str 80xd9
negative fixint0xe0 - 0xff

これは何?

Fluentd サーバにログを送信するためのライブラリです。
サブセット版のMassagePackライブラリも同梱しています。

サーバ側ダウン時の再接続機能は限定的に実装されています。 現時点での実装は送信時に切断を検知し、次回送信時に再接続する仕様です。

Committer:
YuuichiAkagawa
Date:
Mon Dec 15 15:37:23 2014 +0000
Revision:
1:6b1268731465
Parent:
0:b4815a079a4b
rename uMP functions(set_array->start_array, set_map->start_map); add uMP map functions

Who changed what in which revision?

UserRevisionLine numberNew contents of line
YuuichiAkagawa 0:b4815a079a4b 1 /* uMP - micro MessagePack class
YuuichiAkagawa 0:b4815a079a4b 2 * Copyright (c) 2014 Yuuichi Akagawa
YuuichiAkagawa 0:b4815a079a4b 3 *
YuuichiAkagawa 0:b4815a079a4b 4 * Licensed under the Apache License, Version 2.0 (the "License");
YuuichiAkagawa 0:b4815a079a4b 5 * you may not use this file except in compliance with the License.
YuuichiAkagawa 0:b4815a079a4b 6 * You may obtain a copy of the License at
YuuichiAkagawa 0:b4815a079a4b 7 *
YuuichiAkagawa 0:b4815a079a4b 8 * http://www.apache.org/licenses/LICENSE-2.0
YuuichiAkagawa 0:b4815a079a4b 9 *
YuuichiAkagawa 0:b4815a079a4b 10 * Unless required by applicable law or agreed to in writing, software
YuuichiAkagawa 0:b4815a079a4b 11 * distributed under the License is distributed on an "AS IS" BASIS,
YuuichiAkagawa 0:b4815a079a4b 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
YuuichiAkagawa 0:b4815a079a4b 13 * See the License for the specific language governing permissions and
YuuichiAkagawa 0:b4815a079a4b 14 * limitations under the License.
YuuichiAkagawa 0:b4815a079a4b 15 */
YuuichiAkagawa 0:b4815a079a4b 16
YuuichiAkagawa 0:b4815a079a4b 17 #ifndef MBED_UMP_H
YuuichiAkagawa 0:b4815a079a4b 18 #define MBED_UMP_H
YuuichiAkagawa 0:b4815a079a4b 19
YuuichiAkagawa 0:b4815a079a4b 20 #include <stdint.h>
YuuichiAkagawa 0:b4815a079a4b 21 #include <string.h>
YuuichiAkagawa 1:6b1268731465 22 #include <string>
YuuichiAkagawa 0:b4815a079a4b 23
YuuichiAkagawa 0:b4815a079a4b 24 /** Subset of MessagePack implementation.
YuuichiAkagawa 0:b4815a079a4b 25 *
YuuichiAkagawa 0:b4815a079a4b 26 */
YuuichiAkagawa 0:b4815a079a4b 27 class uMP {
YuuichiAkagawa 0:b4815a079a4b 28 public:
YuuichiAkagawa 0:b4815a079a4b 29 /** uMP
YuuichiAkagawa 0:b4815a079a4b 30 */
YuuichiAkagawa 0:b4815a079a4b 31 uMP();
YuuichiAkagawa 0:b4815a079a4b 32 /** uMP
YuuichiAkagawa 0:b4815a079a4b 33 *
YuuichiAkagawa 0:b4815a079a4b 34 * @param size buffer size
YuuichiAkagawa 0:b4815a079a4b 35 */
YuuichiAkagawa 0:b4815a079a4b 36 explicit uMP(uint32_t size);
YuuichiAkagawa 0:b4815a079a4b 37 ~uMP();
YuuichiAkagawa 0:b4815a079a4b 38
YuuichiAkagawa 0:b4815a079a4b 39 /** Initialize buffer pointer
YuuichiAkagawa 0:b4815a079a4b 40 */
YuuichiAkagawa 0:b4815a079a4b 41 void init(){ _ptr = 0; }
YuuichiAkagawa 0:b4815a079a4b 42
YuuichiAkagawa 0:b4815a079a4b 43 /** Get message size
YuuichiAkagawa 0:b4815a079a4b 44 *
YuuichiAkagawa 0:b4815a079a4b 45 * @return message size(bytes)
YuuichiAkagawa 0:b4815a079a4b 46 */
YuuichiAkagawa 0:b4815a079a4b 47 inline uint32_t get_size(){ return _ptr; }
YuuichiAkagawa 0:b4815a079a4b 48
YuuichiAkagawa 0:b4815a079a4b 49 /** Get message buffer pointer
YuuichiAkagawa 0:b4815a079a4b 50 *
YuuichiAkagawa 0:b4815a079a4b 51 * @return Pointer of message buffer
YuuichiAkagawa 0:b4815a079a4b 52 */
YuuichiAkagawa 0:b4815a079a4b 53 inline uint8_t *get_buffer(){ return _buf; }
YuuichiAkagawa 0:b4815a079a4b 54
YuuichiAkagawa 0:b4815a079a4b 55 /** Start array format
YuuichiAkagawa 0:b4815a079a4b 56 *
YuuichiAkagawa 0:b4815a079a4b 57 * @param size Number of array elements
YuuichiAkagawa 0:b4815a079a4b 58 * @retval true Success
YuuichiAkagawa 0:b4815a079a4b 59 * @retval false Failure
YuuichiAkagawa 0:b4815a079a4b 60 */
YuuichiAkagawa 1:6b1268731465 61 bool start_array(uint32_t size);
YuuichiAkagawa 0:b4815a079a4b 62
YuuichiAkagawa 0:b4815a079a4b 63 /** Start map format
YuuichiAkagawa 0:b4815a079a4b 64 *
YuuichiAkagawa 0:b4815a079a4b 65 * @param size Number of map pairs
YuuichiAkagawa 0:b4815a079a4b 66 * @retval true Success
YuuichiAkagawa 0:b4815a079a4b 67 * @retval false Failure
YuuichiAkagawa 0:b4815a079a4b 68 */
YuuichiAkagawa 1:6b1268731465 69 bool start_map(uint32_t size);
YuuichiAkagawa 0:b4815a079a4b 70
YuuichiAkagawa 0:b4815a079a4b 71 /** Set NIL message
YuuichiAkagawa 0:b4815a079a4b 72 *
YuuichiAkagawa 0:b4815a079a4b 73 * @retval true Success
YuuichiAkagawa 0:b4815a079a4b 74 * @retval false Failure
YuuichiAkagawa 0:b4815a079a4b 75 */
YuuichiAkagawa 0:b4815a079a4b 76 bool set_nil();
YuuichiAkagawa 0:b4815a079a4b 77
YuuichiAkagawa 0:b4815a079a4b 78 /** Set TRUE message (bool family)
YuuichiAkagawa 0:b4815a079a4b 79 *
YuuichiAkagawa 0:b4815a079a4b 80 * @retval true Success
YuuichiAkagawa 0:b4815a079a4b 81 * @retval false Failure
YuuichiAkagawa 0:b4815a079a4b 82 */
YuuichiAkagawa 0:b4815a079a4b 83 bool set_true();
YuuichiAkagawa 0:b4815a079a4b 84
YuuichiAkagawa 0:b4815a079a4b 85 /** Set FALSE message (bool family)
YuuichiAkagawa 0:b4815a079a4b 86 *
YuuichiAkagawa 0:b4815a079a4b 87 * @retval true Success
YuuichiAkagawa 0:b4815a079a4b 88 * @retval false Failure
YuuichiAkagawa 0:b4815a079a4b 89 */
YuuichiAkagawa 0:b4815a079a4b 90 bool set_false();
YuuichiAkagawa 0:b4815a079a4b 91
YuuichiAkagawa 0:b4815a079a4b 92 /** Set unsigned int message
YuuichiAkagawa 0:b4815a079a4b 93 *
YuuichiAkagawa 0:b4815a079a4b 94 * Auto route the optimal function.
YuuichiAkagawa 0:b4815a079a4b 95 *
YuuichiAkagawa 0:b4815a079a4b 96 * @param u unsigned int value(max 32bit)
YuuichiAkagawa 0:b4815a079a4b 97 * @retval true Success
YuuichiAkagawa 0:b4815a079a4b 98 * @retval false Failure
YuuichiAkagawa 0:b4815a079a4b 99 */
YuuichiAkagawa 0:b4815a079a4b 100 bool set_uint(uint32_t u); //max 32bit
YuuichiAkagawa 0:b4815a079a4b 101
YuuichiAkagawa 0:b4815a079a4b 102 /** Set uint8 message
YuuichiAkagawa 0:b4815a079a4b 103 *
YuuichiAkagawa 0:b4815a079a4b 104 * @param u uint8_t value
YuuichiAkagawa 0:b4815a079a4b 105 * @retval true Success
YuuichiAkagawa 0:b4815a079a4b 106 * @retval false Failure
YuuichiAkagawa 0:b4815a079a4b 107 */
YuuichiAkagawa 0:b4815a079a4b 108 bool set_u8(uint8_t u);
YuuichiAkagawa 0:b4815a079a4b 109
YuuichiAkagawa 0:b4815a079a4b 110 /** Set uint16 message
YuuichiAkagawa 0:b4815a079a4b 111 *
YuuichiAkagawa 0:b4815a079a4b 112 * @param u uint16_t value
YuuichiAkagawa 0:b4815a079a4b 113 * @retval true Success
YuuichiAkagawa 0:b4815a079a4b 114 * @retval false Failure
YuuichiAkagawa 0:b4815a079a4b 115 */
YuuichiAkagawa 0:b4815a079a4b 116 bool set_u16(uint16_t u);
YuuichiAkagawa 0:b4815a079a4b 117
YuuichiAkagawa 0:b4815a079a4b 118 /** Set uint32 message
YuuichiAkagawa 0:b4815a079a4b 119 *
YuuichiAkagawa 0:b4815a079a4b 120 * @param u uint32_t value
YuuichiAkagawa 0:b4815a079a4b 121 * @retval true Success
YuuichiAkagawa 0:b4815a079a4b 122 * @retval false Failure
YuuichiAkagawa 0:b4815a079a4b 123 */
YuuichiAkagawa 0:b4815a079a4b 124 bool set_u32(uint32_t u);
YuuichiAkagawa 0:b4815a079a4b 125
YuuichiAkagawa 0:b4815a079a4b 126 /** Set uint64 message
YuuichiAkagawa 0:b4815a079a4b 127 *
YuuichiAkagawa 0:b4815a079a4b 128 * @param u uint64_t value
YuuichiAkagawa 0:b4815a079a4b 129 * @retval true Success
YuuichiAkagawa 0:b4815a079a4b 130 * @retval false Failure
YuuichiAkagawa 0:b4815a079a4b 131 */
YuuichiAkagawa 0:b4815a079a4b 132 bool set_u64(uint64_t u);
YuuichiAkagawa 0:b4815a079a4b 133
YuuichiAkagawa 0:b4815a079a4b 134 /** Set signed int message
YuuichiAkagawa 0:b4815a079a4b 135 *
YuuichiAkagawa 0:b4815a079a4b 136 * Auto route the optimal function.
YuuichiAkagawa 0:b4815a079a4b 137 *
YuuichiAkagawa 0:b4815a079a4b 138 * @param s signed int value(max 32bit)
YuuichiAkagawa 0:b4815a079a4b 139 * @retval true Success
YuuichiAkagawa 0:b4815a079a4b 140 * @retval false Failure
YuuichiAkagawa 0:b4815a079a4b 141 */
YuuichiAkagawa 0:b4815a079a4b 142 bool set_sint(int32_t i); //max 32bit
YuuichiAkagawa 0:b4815a079a4b 143
YuuichiAkagawa 0:b4815a079a4b 144 /** Set int8 message
YuuichiAkagawa 0:b4815a079a4b 145 *
YuuichiAkagawa 0:b4815a079a4b 146 * @param s int8_t value
YuuichiAkagawa 0:b4815a079a4b 147 * @retval true Success
YuuichiAkagawa 0:b4815a079a4b 148 * @retval false Failure
YuuichiAkagawa 0:b4815a079a4b 149 */
YuuichiAkagawa 0:b4815a079a4b 150 bool set_s8(int8_t i);
YuuichiAkagawa 0:b4815a079a4b 151
YuuichiAkagawa 0:b4815a079a4b 152 /** Set int16 message
YuuichiAkagawa 0:b4815a079a4b 153 *
YuuichiAkagawa 0:b4815a079a4b 154 * @param s int16_t value
YuuichiAkagawa 0:b4815a079a4b 155 * @retval true Success
YuuichiAkagawa 0:b4815a079a4b 156 * @retval false Failure
YuuichiAkagawa 0:b4815a079a4b 157 */
YuuichiAkagawa 0:b4815a079a4b 158 bool set_s16(int16_t i);
YuuichiAkagawa 0:b4815a079a4b 159
YuuichiAkagawa 0:b4815a079a4b 160 /** Set int32 message
YuuichiAkagawa 0:b4815a079a4b 161 *
YuuichiAkagawa 0:b4815a079a4b 162 * @param s int32_t value
YuuichiAkagawa 0:b4815a079a4b 163 * @retval true Success
YuuichiAkagawa 0:b4815a079a4b 164 * @retval false Failure
YuuichiAkagawa 0:b4815a079a4b 165 */
YuuichiAkagawa 0:b4815a079a4b 166 bool set_s32(int32_t i);
YuuichiAkagawa 0:b4815a079a4b 167
YuuichiAkagawa 0:b4815a079a4b 168 /** Set int64 message
YuuichiAkagawa 0:b4815a079a4b 169 *
YuuichiAkagawa 0:b4815a079a4b 170 * @param s int64_t value
YuuichiAkagawa 0:b4815a079a4b 171 * @retval true Success
YuuichiAkagawa 0:b4815a079a4b 172 * @retval false Failure
YuuichiAkagawa 0:b4815a079a4b 173 */
YuuichiAkagawa 0:b4815a079a4b 174 bool set_s64(int64_t i);
YuuichiAkagawa 0:b4815a079a4b 175
YuuichiAkagawa 0:b4815a079a4b 176 /** Set float(32bit) message
YuuichiAkagawa 0:b4815a079a4b 177 *
YuuichiAkagawa 0:b4815a079a4b 178 * @param f float value
YuuichiAkagawa 0:b4815a079a4b 179 * @retval true Success
YuuichiAkagawa 0:b4815a079a4b 180 * @retval false Failure
YuuichiAkagawa 0:b4815a079a4b 181 */
YuuichiAkagawa 0:b4815a079a4b 182 bool set_float(float f);
YuuichiAkagawa 0:b4815a079a4b 183
YuuichiAkagawa 0:b4815a079a4b 184 /** Set double(64bit) message
YuuichiAkagawa 0:b4815a079a4b 185 *
YuuichiAkagawa 0:b4815a079a4b 186 * @param d double value
YuuichiAkagawa 0:b4815a079a4b 187 * @retval true Success
YuuichiAkagawa 0:b4815a079a4b 188 * @retval false Failure
YuuichiAkagawa 0:b4815a079a4b 189 */
YuuichiAkagawa 0:b4815a079a4b 190 bool set_double(double d);
YuuichiAkagawa 0:b4815a079a4b 191
YuuichiAkagawa 0:b4815a079a4b 192 /** Set string message
YuuichiAkagawa 0:b4815a079a4b 193 *
YuuichiAkagawa 0:b4815a079a4b 194 * Auto route the optimal function.
YuuichiAkagawa 0:b4815a079a4b 195 *
YuuichiAkagawa 0:b4815a079a4b 196 * @param data Pointer of message string
YuuichiAkagawa 0:b4815a079a4b 197 * @param size Size of message string (max 255 bytes)
YuuichiAkagawa 0:b4815a079a4b 198 * @retval true Success
YuuichiAkagawa 0:b4815a079a4b 199 * @retval false Failure
YuuichiAkagawa 0:b4815a079a4b 200 */
YuuichiAkagawa 0:b4815a079a4b 201 bool set_str(const char *data, uint32_t size);
YuuichiAkagawa 0:b4815a079a4b 202
YuuichiAkagawa 1:6b1268731465 203 /** Set string message
YuuichiAkagawa 1:6b1268731465 204 *
YuuichiAkagawa 1:6b1268731465 205 * Auto route the optimal function.
YuuichiAkagawa 1:6b1268731465 206 *
YuuichiAkagawa 1:6b1268731465 207 * @param str string of message string
YuuichiAkagawa 1:6b1268731465 208 * @retval true Success
YuuichiAkagawa 1:6b1268731465 209 * @retval false Failure
YuuichiAkagawa 1:6b1268731465 210 */
YuuichiAkagawa 1:6b1268731465 211 bool set_str(const std::string& str);
YuuichiAkagawa 1:6b1268731465 212
YuuichiAkagawa 0:b4815a079a4b 213 /** Set string message (upto 31 bytes)
YuuichiAkagawa 0:b4815a079a4b 214 *
YuuichiAkagawa 0:b4815a079a4b 215 * @param data Pointer of message string
YuuichiAkagawa 0:b4815a079a4b 216 * @param size Size of message string (max 31 bytes)
YuuichiAkagawa 0:b4815a079a4b 217 * @retval true Success
YuuichiAkagawa 0:b4815a079a4b 218 * @retval false Failure
YuuichiAkagawa 0:b4815a079a4b 219 */
YuuichiAkagawa 0:b4815a079a4b 220 bool set_fixstr(const char *data, uint8_t size);
YuuichiAkagawa 0:b4815a079a4b 221
YuuichiAkagawa 0:b4815a079a4b 222 /** Set string message (upto 256 bytes)
YuuichiAkagawa 0:b4815a079a4b 223 *
YuuichiAkagawa 0:b4815a079a4b 224 * @param data Pointer of message string
YuuichiAkagawa 0:b4815a079a4b 225 * @param size Size of message string (max 255 bytes)
YuuichiAkagawa 0:b4815a079a4b 226 * @retval true Success
YuuichiAkagawa 0:b4815a079a4b 227 * @retval false Failure
YuuichiAkagawa 0:b4815a079a4b 228 */
YuuichiAkagawa 0:b4815a079a4b 229 bool set_str8(const char *data, uint8_t size);
YuuichiAkagawa 0:b4815a079a4b 230
YuuichiAkagawa 0:b4815a079a4b 231 /** Set raw message
YuuichiAkagawa 0:b4815a079a4b 232 *
YuuichiAkagawa 0:b4815a079a4b 233 * Insert the pre build message into buffer.
YuuichiAkagawa 0:b4815a079a4b 234 * This function is not MessagePack standard.
YuuichiAkagawa 0:b4815a079a4b 235 *
YuuichiAkagawa 0:b4815a079a4b 236 * @param data Pointer of message string
YuuichiAkagawa 0:b4815a079a4b 237 * @param size Size of message string
YuuichiAkagawa 0:b4815a079a4b 238 * @retval true Success
YuuichiAkagawa 0:b4815a079a4b 239 * @retval false Failure
YuuichiAkagawa 0:b4815a079a4b 240 */
YuuichiAkagawa 0:b4815a079a4b 241 bool set_raw(const char *data, uint8_t size);
YuuichiAkagawa 0:b4815a079a4b 242
YuuichiAkagawa 1:6b1268731465 243 /** associate a key with value (bool)
YuuichiAkagawa 1:6b1268731465 244 *
YuuichiAkagawa 1:6b1268731465 245 * @param k key string
YuuichiAkagawa 1:6b1268731465 246 * @param v bool value(true/false)
YuuichiAkagawa 1:6b1268731465 247 * @retval true Success
YuuichiAkagawa 1:6b1268731465 248 * @retval false Failure
YuuichiAkagawa 1:6b1268731465 249 */
YuuichiAkagawa 1:6b1268731465 250 bool map(const std::string& k, bool v);
YuuichiAkagawa 1:6b1268731465 251
YuuichiAkagawa 1:6b1268731465 252 /** associate a key with value (uint8_t)
YuuichiAkagawa 1:6b1268731465 253 *
YuuichiAkagawa 1:6b1268731465 254 * @param k key string
YuuichiAkagawa 1:6b1268731465 255 * @param v value
YuuichiAkagawa 1:6b1268731465 256 * @retval true Success
YuuichiAkagawa 1:6b1268731465 257 * @retval false Failure
YuuichiAkagawa 1:6b1268731465 258 */
YuuichiAkagawa 1:6b1268731465 259 bool map(const std::string& k, uint8_t v);
YuuichiAkagawa 1:6b1268731465 260
YuuichiAkagawa 1:6b1268731465 261 /** associate a key with value (uint16_t)
YuuichiAkagawa 1:6b1268731465 262 *
YuuichiAkagawa 1:6b1268731465 263 * @param k key string
YuuichiAkagawa 1:6b1268731465 264 * @param v value
YuuichiAkagawa 1:6b1268731465 265 * @retval true Success
YuuichiAkagawa 1:6b1268731465 266 * @retval false Failure
YuuichiAkagawa 1:6b1268731465 267 */
YuuichiAkagawa 1:6b1268731465 268 bool map(const std::string& k, uint16_t v);
YuuichiAkagawa 1:6b1268731465 269
YuuichiAkagawa 1:6b1268731465 270 /** associate a key with value (uint32_t)
YuuichiAkagawa 1:6b1268731465 271 *
YuuichiAkagawa 1:6b1268731465 272 * @param k key string
YuuichiAkagawa 1:6b1268731465 273 * @param v value
YuuichiAkagawa 1:6b1268731465 274 * @retval true Success
YuuichiAkagawa 1:6b1268731465 275 * @retval false Failure
YuuichiAkagawa 1:6b1268731465 276 */
YuuichiAkagawa 1:6b1268731465 277 bool map(const std::string& k, uint32_t v);
YuuichiAkagawa 1:6b1268731465 278
YuuichiAkagawa 1:6b1268731465 279 /** associate a key with value (int8_t)
YuuichiAkagawa 1:6b1268731465 280 *
YuuichiAkagawa 1:6b1268731465 281 * @param k key string
YuuichiAkagawa 1:6b1268731465 282 * @param v value
YuuichiAkagawa 1:6b1268731465 283 * @retval true Success
YuuichiAkagawa 1:6b1268731465 284 * @retval false Failure
YuuichiAkagawa 1:6b1268731465 285 */
YuuichiAkagawa 1:6b1268731465 286 bool map(const std::string& k, int8_t v);
YuuichiAkagawa 1:6b1268731465 287
YuuichiAkagawa 1:6b1268731465 288 /** associate a key with value (int16_t)
YuuichiAkagawa 1:6b1268731465 289 *
YuuichiAkagawa 1:6b1268731465 290 * @param k key string
YuuichiAkagawa 1:6b1268731465 291 * @param v value
YuuichiAkagawa 1:6b1268731465 292 * @retval true Success
YuuichiAkagawa 1:6b1268731465 293 * @retval false Failure
YuuichiAkagawa 1:6b1268731465 294 */
YuuichiAkagawa 1:6b1268731465 295 bool map(const std::string& k, int16_t v);
YuuichiAkagawa 1:6b1268731465 296
YuuichiAkagawa 1:6b1268731465 297 /** associate a key with value (int32_t)
YuuichiAkagawa 1:6b1268731465 298 *
YuuichiAkagawa 1:6b1268731465 299 * @param k key string
YuuichiAkagawa 1:6b1268731465 300 * @param v value
YuuichiAkagawa 1:6b1268731465 301 * @retval true Success
YuuichiAkagawa 1:6b1268731465 302 * @retval false Failure
YuuichiAkagawa 1:6b1268731465 303 */
YuuichiAkagawa 1:6b1268731465 304 bool map(const std::string& k, int32_t v);
YuuichiAkagawa 1:6b1268731465 305
YuuichiAkagawa 1:6b1268731465 306 /** associate a key with value (float)
YuuichiAkagawa 1:6b1268731465 307 *
YuuichiAkagawa 1:6b1268731465 308 * @param k key string
YuuichiAkagawa 1:6b1268731465 309 * @param v value
YuuichiAkagawa 1:6b1268731465 310 * @retval true Success
YuuichiAkagawa 1:6b1268731465 311 * @retval false Failure
YuuichiAkagawa 1:6b1268731465 312 */
YuuichiAkagawa 1:6b1268731465 313 bool map(const std::string& k, float v);
YuuichiAkagawa 1:6b1268731465 314
YuuichiAkagawa 1:6b1268731465 315 /** associate a key with value (double)
YuuichiAkagawa 1:6b1268731465 316 *
YuuichiAkagawa 1:6b1268731465 317 * @param k key string
YuuichiAkagawa 1:6b1268731465 318 * @param v value
YuuichiAkagawa 1:6b1268731465 319 * @retval true Success
YuuichiAkagawa 1:6b1268731465 320 * @retval false Failure
YuuichiAkagawa 1:6b1268731465 321 */
YuuichiAkagawa 1:6b1268731465 322 bool map(const std::string& k, double v);
YuuichiAkagawa 1:6b1268731465 323
YuuichiAkagawa 1:6b1268731465 324 /** associate a key with value (char * string)
YuuichiAkagawa 1:6b1268731465 325 *
YuuichiAkagawa 1:6b1268731465 326 * @param k key string
YuuichiAkagawa 1:6b1268731465 327 * @param v value
YuuichiAkagawa 1:6b1268731465 328 * @retval true Success
YuuichiAkagawa 1:6b1268731465 329 * @retval false Failure
YuuichiAkagawa 1:6b1268731465 330 */
YuuichiAkagawa 1:6b1268731465 331 bool map(const std::string& k, const char *v);
YuuichiAkagawa 1:6b1268731465 332
YuuichiAkagawa 1:6b1268731465 333 /** associate a key with value (string)
YuuichiAkagawa 1:6b1268731465 334 *
YuuichiAkagawa 1:6b1268731465 335 * @param k key string
YuuichiAkagawa 1:6b1268731465 336 * @param v value
YuuichiAkagawa 1:6b1268731465 337 * @retval true Success
YuuichiAkagawa 1:6b1268731465 338 * @retval false Failure
YuuichiAkagawa 1:6b1268731465 339 */
YuuichiAkagawa 1:6b1268731465 340 bool map(const std::string& k, const std::string& v);
YuuichiAkagawa 1:6b1268731465 341
YuuichiAkagawa 0:b4815a079a4b 342 private:
YuuichiAkagawa 0:b4815a079a4b 343 enum MpTag{
YuuichiAkagawa 0:b4815a079a4b 344 TAG_POSITIVE_FIXNUM = 0x00,
YuuichiAkagawa 0:b4815a079a4b 345 TAG_FIXMAP = 0x80,
YuuichiAkagawa 0:b4815a079a4b 346 TAG_FIXARRAY = 0x90,
YuuichiAkagawa 0:b4815a079a4b 347 TAG_FIXSTR = 0xa0,
YuuichiAkagawa 0:b4815a079a4b 348 TAG_NIL = 0xc0,
YuuichiAkagawa 0:b4815a079a4b 349 TAG_FALSE = 0xc2,
YuuichiAkagawa 0:b4815a079a4b 350 TAG_TRUE = 0xc3,
YuuichiAkagawa 0:b4815a079a4b 351 // TAG_BIN8 = 0xc4,
YuuichiAkagawa 0:b4815a079a4b 352 // TAG_BIN16 = 0xc5,
YuuichiAkagawa 0:b4815a079a4b 353 // TAG_BIN32 = 0xc6,
YuuichiAkagawa 0:b4815a079a4b 354 // TAG_EXT8 = 0xc7,
YuuichiAkagawa 0:b4815a079a4b 355 // TAG_EXT16 = 0xc8,
YuuichiAkagawa 0:b4815a079a4b 356 // TAG_EXT32 = 0xc9,
YuuichiAkagawa 0:b4815a079a4b 357 TAG_FLOAT32 = 0xca,
YuuichiAkagawa 0:b4815a079a4b 358 TAG_FLOAT64 = 0xcb,
YuuichiAkagawa 0:b4815a079a4b 359 TAG_U8 = 0xcc,
YuuichiAkagawa 0:b4815a079a4b 360 TAG_U16 = 0xcd,
YuuichiAkagawa 0:b4815a079a4b 361 TAG_U32 = 0xce,
YuuichiAkagawa 0:b4815a079a4b 362 TAG_U64 = 0xcf,
YuuichiAkagawa 0:b4815a079a4b 363 TAG_S8 = 0xd0,
YuuichiAkagawa 0:b4815a079a4b 364 TAG_S16 = 0xd1,
YuuichiAkagawa 0:b4815a079a4b 365 TAG_S32 = 0xd2,
YuuichiAkagawa 0:b4815a079a4b 366 TAG_S64 = 0xd3,
YuuichiAkagawa 0:b4815a079a4b 367 // TAG_FIXEXT1 = 0xd4,
YuuichiAkagawa 0:b4815a079a4b 368 // TAG_FIXEXT2 = 0xd5,
YuuichiAkagawa 0:b4815a079a4b 369 // TAG_FIXEXT16 = 0xd8,
YuuichiAkagawa 0:b4815a079a4b 370 TAG_STR8 = 0xd9,
YuuichiAkagawa 0:b4815a079a4b 371 // TAG_STR16 = 0xda,
YuuichiAkagawa 0:b4815a079a4b 372 // TAG_STR32 = 0xdb,
YuuichiAkagawa 0:b4815a079a4b 373 // TAG_ARRAY16 = 0xdc,
YuuichiAkagawa 0:b4815a079a4b 374 // TAG_ARRAY32 = 0xdd,
YuuichiAkagawa 0:b4815a079a4b 375 // TAG_MAP16 = 0xde,
YuuichiAkagawa 0:b4815a079a4b 376 // TAG_MAP32 = 0xdf,
YuuichiAkagawa 0:b4815a079a4b 377 TAG_NEGATIVE_FIXNUM = 0xe0
YuuichiAkagawa 0:b4815a079a4b 378 };
YuuichiAkagawa 0:b4815a079a4b 379
YuuichiAkagawa 0:b4815a079a4b 380 static const uint16_t DEFAULT_BUFFSIZE = 128;
YuuichiAkagawa 0:b4815a079a4b 381 uint8_t *_buf;
YuuichiAkagawa 0:b4815a079a4b 382 uint32_t _ptr;
YuuichiAkagawa 0:b4815a079a4b 383 uint32_t _nbuf;
YuuichiAkagawa 0:b4815a079a4b 384
YuuichiAkagawa 0:b4815a079a4b 385 /** Insert sigle byte fomrat message
YuuichiAkagawa 0:b4815a079a4b 386 *
YuuichiAkagawa 0:b4815a079a4b 387 * @param c single byte message format data
YuuichiAkagawa 0:b4815a079a4b 388 * @retval true Success
YuuichiAkagawa 0:b4815a079a4b 389 * @retval false Failure
YuuichiAkagawa 0:b4815a079a4b 390 */
YuuichiAkagawa 0:b4815a079a4b 391 bool set_buffer(const uint8_t c);
YuuichiAkagawa 0:b4815a079a4b 392
YuuichiAkagawa 0:b4815a079a4b 393 /** Insert multi byte fomrat message
YuuichiAkagawa 0:b4815a079a4b 394 *
YuuichiAkagawa 0:b4815a079a4b 395 * @param c Pointer of message data
YuuichiAkagawa 0:b4815a079a4b 396 * @param sise Size of message data
YuuichiAkagawa 0:b4815a079a4b 397 * @retval true Success
YuuichiAkagawa 0:b4815a079a4b 398 * @retval false Failure
YuuichiAkagawa 0:b4815a079a4b 399 */
YuuichiAkagawa 0:b4815a079a4b 400 bool set_buffer(const uint8_t *c, size_t size);
YuuichiAkagawa 0:b4815a079a4b 401
YuuichiAkagawa 0:b4815a079a4b 402 /** Endian converter - 16bit data
YuuichiAkagawa 0:b4815a079a4b 403 *
YuuichiAkagawa 0:b4815a079a4b 404 * @param t 16bit data
YuuichiAkagawa 0:b4815a079a4b 405 * @return converted 16bit data
YuuichiAkagawa 0:b4815a079a4b 406 */
YuuichiAkagawa 0:b4815a079a4b 407 template<typename T> T to_be16(T t);
YuuichiAkagawa 0:b4815a079a4b 408
YuuichiAkagawa 0:b4815a079a4b 409 /** Endian converter - 32bit data
YuuichiAkagawa 0:b4815a079a4b 410 *
YuuichiAkagawa 0:b4815a079a4b 411 * @param t 32bit data
YuuichiAkagawa 0:b4815a079a4b 412 * @return converted 32bit data
YuuichiAkagawa 0:b4815a079a4b 413 */
YuuichiAkagawa 0:b4815a079a4b 414 template<typename T> T to_be32(T t);
YuuichiAkagawa 0:b4815a079a4b 415
YuuichiAkagawa 0:b4815a079a4b 416 /** Endian converter - 64bit data
YuuichiAkagawa 0:b4815a079a4b 417 *
YuuichiAkagawa 0:b4815a079a4b 418 * @param t 64bit data
YuuichiAkagawa 0:b4815a079a4b 419 * @return converted 64bit data
YuuichiAkagawa 0:b4815a079a4b 420 */
YuuichiAkagawa 0:b4815a079a4b 421 template<typename T> T to_be64(T t);
YuuichiAkagawa 0:b4815a079a4b 422 };
YuuichiAkagawa 0:b4815a079a4b 423
YuuichiAkagawa 0:b4815a079a4b 424 #endif