FluentLogger: fluent-logger-mbed A structured logger for Fluentd (mbed)
Dependents: FluentLogger_Hello SNIC-FluentLogger-example
FluentLogger
What is this ?
You can logging to Fluentd server.
This library included subset of MassagePack library.
Supported MessagePack formats(encode only)
format name | first byte (in hex) |
---|---|
positive fixint | 0x00 - 0x7f |
fixmap | 0x80 - 0x8f |
fixarray | 0x90 - 0x9f |
fixstr | 0xa0 - 0xbf |
nil | 0xc0 |
false | 0xc2 |
true | 0xc3 |
float 32 | 0xca |
float 64 | 0xcb |
uint 8 | 0xcc |
uint 16 | 0xcd |
uint 32 | 0xce |
uint 64 | 0xcf |
int 8 | 0xd0 |
int 16 | 0xd1 |
int 32 | 0xd2 |
int 64 | 0xd3 |
str 8 | 0xd9 |
negative fixint | 0xe0 - 0xff |
これは何?
Fluentd サーバにログを送信するためのライブラリです。
サブセット版のMassagePackライブラリも同梱しています。
サーバ側ダウン時の再接続機能は限定的に実装されています。 現時点での実装は送信時に切断を検知し、次回送信時に再接続する仕様です。
uMP.h@1:6b1268731465, 2014-12-15 (annotated)
- 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?
User | Revision | Line number | New 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 |