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.cpp@0:b4815a079a4b, 2014-11-11 (annotated)
- Committer:
- YuuichiAkagawa
- Date:
- Tue Nov 11 02:14:44 2014 +0000
- Revision:
- 0:b4815a079a4b
- Child:
- 1:6b1268731465
Initial release
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 | #include "mbed.h" |
YuuichiAkagawa | 0:b4815a079a4b | 18 | #include "uMP.h" |
YuuichiAkagawa | 0:b4815a079a4b | 19 | |
YuuichiAkagawa | 0:b4815a079a4b | 20 | uMP::uMP() : |
YuuichiAkagawa | 0:b4815a079a4b | 21 | _ptr(0), _nbuf(DEFAULT_BUFFSIZE) |
YuuichiAkagawa | 0:b4815a079a4b | 22 | { |
YuuichiAkagawa | 0:b4815a079a4b | 23 | _buf = new uint8_t[_nbuf]; |
YuuichiAkagawa | 0:b4815a079a4b | 24 | } |
YuuichiAkagawa | 0:b4815a079a4b | 25 | |
YuuichiAkagawa | 0:b4815a079a4b | 26 | uMP::uMP(uint32_t size) : |
YuuichiAkagawa | 0:b4815a079a4b | 27 | _ptr(0), _nbuf(size) |
YuuichiAkagawa | 0:b4815a079a4b | 28 | { |
YuuichiAkagawa | 0:b4815a079a4b | 29 | _buf = new uint8_t[_nbuf]; |
YuuichiAkagawa | 0:b4815a079a4b | 30 | } |
YuuichiAkagawa | 0:b4815a079a4b | 31 | |
YuuichiAkagawa | 0:b4815a079a4b | 32 | uMP::~uMP() |
YuuichiAkagawa | 0:b4815a079a4b | 33 | { |
YuuichiAkagawa | 0:b4815a079a4b | 34 | delete[] _buf; |
YuuichiAkagawa | 0:b4815a079a4b | 35 | } |
YuuichiAkagawa | 0:b4815a079a4b | 36 | |
YuuichiAkagawa | 0:b4815a079a4b | 37 | /* MessagePack funcions (Subset) */ |
YuuichiAkagawa | 0:b4815a079a4b | 38 | bool uMP::set_nil() |
YuuichiAkagawa | 0:b4815a079a4b | 39 | { |
YuuichiAkagawa | 0:b4815a079a4b | 40 | return set_buffer(TAG_NIL); |
YuuichiAkagawa | 0:b4815a079a4b | 41 | } |
YuuichiAkagawa | 0:b4815a079a4b | 42 | |
YuuichiAkagawa | 0:b4815a079a4b | 43 | bool uMP::set_true() |
YuuichiAkagawa | 0:b4815a079a4b | 44 | { |
YuuichiAkagawa | 0:b4815a079a4b | 45 | return set_buffer(TAG_TRUE); |
YuuichiAkagawa | 0:b4815a079a4b | 46 | } |
YuuichiAkagawa | 0:b4815a079a4b | 47 | |
YuuichiAkagawa | 0:b4815a079a4b | 48 | bool uMP::set_false() |
YuuichiAkagawa | 0:b4815a079a4b | 49 | { |
YuuichiAkagawa | 0:b4815a079a4b | 50 | return set_buffer(TAG_FALSE); |
YuuichiAkagawa | 0:b4815a079a4b | 51 | } |
YuuichiAkagawa | 0:b4815a079a4b | 52 | |
YuuichiAkagawa | 0:b4815a079a4b | 53 | bool uMP::set_array(uint32_t size) |
YuuichiAkagawa | 0:b4815a079a4b | 54 | { |
YuuichiAkagawa | 0:b4815a079a4b | 55 | if (size <= 0x0f) { |
YuuichiAkagawa | 0:b4815a079a4b | 56 | return set_buffer((uint8_t)(TAG_FIXARRAY | size)); |
YuuichiAkagawa | 0:b4815a079a4b | 57 | } |
YuuichiAkagawa | 0:b4815a079a4b | 58 | return false; |
YuuichiAkagawa | 0:b4815a079a4b | 59 | } |
YuuichiAkagawa | 0:b4815a079a4b | 60 | |
YuuichiAkagawa | 0:b4815a079a4b | 61 | bool uMP::set_map(uint32_t size) |
YuuichiAkagawa | 0:b4815a079a4b | 62 | { |
YuuichiAkagawa | 0:b4815a079a4b | 63 | if (size <= 0x0f) { |
YuuichiAkagawa | 0:b4815a079a4b | 64 | return set_buffer((uint8_t)(TAG_FIXMAP | size)); |
YuuichiAkagawa | 0:b4815a079a4b | 65 | } |
YuuichiAkagawa | 0:b4815a079a4b | 66 | #if 0 |
YuuichiAkagawa | 0:b4815a079a4b | 67 | if (size <= 0xffff) { |
YuuichiAkagawa | 0:b4815a079a4b | 68 | return cmp_write_map16(ctx, size); |
YuuichiAkagawa | 0:b4815a079a4b | 69 | } |
YuuichiAkagawa | 0:b4815a079a4b | 70 | #endif |
YuuichiAkagawa | 0:b4815a079a4b | 71 | return false; |
YuuichiAkagawa | 0:b4815a079a4b | 72 | } |
YuuichiAkagawa | 0:b4815a079a4b | 73 | |
YuuichiAkagawa | 0:b4815a079a4b | 74 | bool uMP::set_uint(uint32_t u) |
YuuichiAkagawa | 0:b4815a079a4b | 75 | { |
YuuichiAkagawa | 0:b4815a079a4b | 76 | if (u <= 0x7f) { |
YuuichiAkagawa | 0:b4815a079a4b | 77 | return set_buffer((uint8_t)u); |
YuuichiAkagawa | 0:b4815a079a4b | 78 | } |
YuuichiAkagawa | 0:b4815a079a4b | 79 | if (u <= 0xff) { |
YuuichiAkagawa | 0:b4815a079a4b | 80 | return set_u8((uint8_t)u); |
YuuichiAkagawa | 0:b4815a079a4b | 81 | } |
YuuichiAkagawa | 0:b4815a079a4b | 82 | if (u <= 0xffff) { |
YuuichiAkagawa | 0:b4815a079a4b | 83 | return set_u16((uint16_t)u); |
YuuichiAkagawa | 0:b4815a079a4b | 84 | } |
YuuichiAkagawa | 0:b4815a079a4b | 85 | if (u <= 0xffffffff) { |
YuuichiAkagawa | 0:b4815a079a4b | 86 | return set_u32(u); |
YuuichiAkagawa | 0:b4815a079a4b | 87 | } |
YuuichiAkagawa | 0:b4815a079a4b | 88 | return false; |
YuuichiAkagawa | 0:b4815a079a4b | 89 | } |
YuuichiAkagawa | 0:b4815a079a4b | 90 | |
YuuichiAkagawa | 0:b4815a079a4b | 91 | bool uMP::set_u8(uint8_t u) |
YuuichiAkagawa | 0:b4815a079a4b | 92 | { |
YuuichiAkagawa | 0:b4815a079a4b | 93 | if (!set_buffer((uint8_t)TAG_U8)) { |
YuuichiAkagawa | 0:b4815a079a4b | 94 | return false; |
YuuichiAkagawa | 0:b4815a079a4b | 95 | } |
YuuichiAkagawa | 0:b4815a079a4b | 96 | return set_buffer(u); |
YuuichiAkagawa | 0:b4815a079a4b | 97 | } |
YuuichiAkagawa | 0:b4815a079a4b | 98 | |
YuuichiAkagawa | 0:b4815a079a4b | 99 | bool uMP::set_u16(uint16_t u) |
YuuichiAkagawa | 0:b4815a079a4b | 100 | { |
YuuichiAkagawa | 0:b4815a079a4b | 101 | if (!set_buffer((uint8_t)TAG_U16)) { |
YuuichiAkagawa | 0:b4815a079a4b | 102 | return false; |
YuuichiAkagawa | 0:b4815a079a4b | 103 | } |
YuuichiAkagawa | 0:b4815a079a4b | 104 | |
YuuichiAkagawa | 0:b4815a079a4b | 105 | u = to_be16(u); |
YuuichiAkagawa | 0:b4815a079a4b | 106 | return set_buffer((uint8_t*)&u, sizeof(uint16_t)); |
YuuichiAkagawa | 0:b4815a079a4b | 107 | } |
YuuichiAkagawa | 0:b4815a079a4b | 108 | |
YuuichiAkagawa | 0:b4815a079a4b | 109 | bool uMP::set_u32(uint32_t u) |
YuuichiAkagawa | 0:b4815a079a4b | 110 | { |
YuuichiAkagawa | 0:b4815a079a4b | 111 | if (!set_buffer((uint8_t)TAG_U32)) { |
YuuichiAkagawa | 0:b4815a079a4b | 112 | return false; |
YuuichiAkagawa | 0:b4815a079a4b | 113 | } |
YuuichiAkagawa | 0:b4815a079a4b | 114 | |
YuuichiAkagawa | 0:b4815a079a4b | 115 | u = to_be32(u); |
YuuichiAkagawa | 0:b4815a079a4b | 116 | return set_buffer((uint8_t*)&u, sizeof(uint32_t)); |
YuuichiAkagawa | 0:b4815a079a4b | 117 | } |
YuuichiAkagawa | 0:b4815a079a4b | 118 | |
YuuichiAkagawa | 0:b4815a079a4b | 119 | bool uMP::set_u64(uint64_t u) |
YuuichiAkagawa | 0:b4815a079a4b | 120 | { |
YuuichiAkagawa | 0:b4815a079a4b | 121 | if (!set_buffer((uint8_t)TAG_U64)) { |
YuuichiAkagawa | 0:b4815a079a4b | 122 | return false; |
YuuichiAkagawa | 0:b4815a079a4b | 123 | } |
YuuichiAkagawa | 0:b4815a079a4b | 124 | |
YuuichiAkagawa | 0:b4815a079a4b | 125 | u = to_be64(u); |
YuuichiAkagawa | 0:b4815a079a4b | 126 | return set_buffer((uint8_t*)&u, sizeof(uint64_t)); |
YuuichiAkagawa | 0:b4815a079a4b | 127 | } |
YuuichiAkagawa | 0:b4815a079a4b | 128 | |
YuuichiAkagawa | 0:b4815a079a4b | 129 | bool uMP::set_sint(int32_t i) |
YuuichiAkagawa | 0:b4815a079a4b | 130 | { |
YuuichiAkagawa | 0:b4815a079a4b | 131 | if (i >=0) { |
YuuichiAkagawa | 0:b4815a079a4b | 132 | return set_uint((uint32_t)i); |
YuuichiAkagawa | 0:b4815a079a4b | 133 | } |
YuuichiAkagawa | 0:b4815a079a4b | 134 | if (i >= -32) { |
YuuichiAkagawa | 0:b4815a079a4b | 135 | return set_buffer((uint8_t)i); |
YuuichiAkagawa | 0:b4815a079a4b | 136 | } |
YuuichiAkagawa | 0:b4815a079a4b | 137 | if (i >= -128) { |
YuuichiAkagawa | 0:b4815a079a4b | 138 | return set_s8(i); |
YuuichiAkagawa | 0:b4815a079a4b | 139 | } |
YuuichiAkagawa | 0:b4815a079a4b | 140 | if (i >= -32768) { |
YuuichiAkagawa | 0:b4815a079a4b | 141 | return set_s16(i); |
YuuichiAkagawa | 0:b4815a079a4b | 142 | } |
YuuichiAkagawa | 0:b4815a079a4b | 143 | if (i >= -2147483648) { |
YuuichiAkagawa | 0:b4815a079a4b | 144 | return set_s32(i); |
YuuichiAkagawa | 0:b4815a079a4b | 145 | } |
YuuichiAkagawa | 0:b4815a079a4b | 146 | return false; |
YuuichiAkagawa | 0:b4815a079a4b | 147 | } |
YuuichiAkagawa | 0:b4815a079a4b | 148 | |
YuuichiAkagawa | 0:b4815a079a4b | 149 | bool uMP::set_s8(int8_t i) |
YuuichiAkagawa | 0:b4815a079a4b | 150 | { |
YuuichiAkagawa | 0:b4815a079a4b | 151 | if (!set_buffer((uint8_t)TAG_S8)) { |
YuuichiAkagawa | 0:b4815a079a4b | 152 | return false; |
YuuichiAkagawa | 0:b4815a079a4b | 153 | } |
YuuichiAkagawa | 0:b4815a079a4b | 154 | return set_buffer((uint8_t)i); |
YuuichiAkagawa | 0:b4815a079a4b | 155 | } |
YuuichiAkagawa | 0:b4815a079a4b | 156 | |
YuuichiAkagawa | 0:b4815a079a4b | 157 | bool uMP::set_s16(int16_t i) |
YuuichiAkagawa | 0:b4815a079a4b | 158 | { |
YuuichiAkagawa | 0:b4815a079a4b | 159 | if (!set_buffer((uint8_t)TAG_S16)) { |
YuuichiAkagawa | 0:b4815a079a4b | 160 | return false; |
YuuichiAkagawa | 0:b4815a079a4b | 161 | } |
YuuichiAkagawa | 0:b4815a079a4b | 162 | |
YuuichiAkagawa | 0:b4815a079a4b | 163 | i = to_be16(i); |
YuuichiAkagawa | 0:b4815a079a4b | 164 | return set_buffer((uint8_t*)&i, sizeof(int16_t)); |
YuuichiAkagawa | 0:b4815a079a4b | 165 | } |
YuuichiAkagawa | 0:b4815a079a4b | 166 | |
YuuichiAkagawa | 0:b4815a079a4b | 167 | bool uMP::set_s32(int32_t i) |
YuuichiAkagawa | 0:b4815a079a4b | 168 | { |
YuuichiAkagawa | 0:b4815a079a4b | 169 | if (!set_buffer((uint8_t)TAG_S32)) { |
YuuichiAkagawa | 0:b4815a079a4b | 170 | return false; |
YuuichiAkagawa | 0:b4815a079a4b | 171 | } |
YuuichiAkagawa | 0:b4815a079a4b | 172 | |
YuuichiAkagawa | 0:b4815a079a4b | 173 | i = to_be32(i); |
YuuichiAkagawa | 0:b4815a079a4b | 174 | return set_buffer((uint8_t*)&i, sizeof(int32_t)); |
YuuichiAkagawa | 0:b4815a079a4b | 175 | } |
YuuichiAkagawa | 0:b4815a079a4b | 176 | |
YuuichiAkagawa | 0:b4815a079a4b | 177 | bool uMP::set_s64(int64_t i) |
YuuichiAkagawa | 0:b4815a079a4b | 178 | { |
YuuichiAkagawa | 0:b4815a079a4b | 179 | if (!set_buffer((uint8_t)TAG_S64)) { |
YuuichiAkagawa | 0:b4815a079a4b | 180 | return false; |
YuuichiAkagawa | 0:b4815a079a4b | 181 | } |
YuuichiAkagawa | 0:b4815a079a4b | 182 | |
YuuichiAkagawa | 0:b4815a079a4b | 183 | i = to_be64(i); |
YuuichiAkagawa | 0:b4815a079a4b | 184 | return set_buffer((uint8_t*)&i, sizeof(int64_t)); |
YuuichiAkagawa | 0:b4815a079a4b | 185 | } |
YuuichiAkagawa | 0:b4815a079a4b | 186 | |
YuuichiAkagawa | 0:b4815a079a4b | 187 | bool uMP::set_str(const char *data, uint32_t size) |
YuuichiAkagawa | 0:b4815a079a4b | 188 | { |
YuuichiAkagawa | 0:b4815a079a4b | 189 | if (size <= 0x1f) { |
YuuichiAkagawa | 0:b4815a079a4b | 190 | return set_fixstr(data, size); |
YuuichiAkagawa | 0:b4815a079a4b | 191 | } |
YuuichiAkagawa | 0:b4815a079a4b | 192 | if (size <= 0xff) { |
YuuichiAkagawa | 0:b4815a079a4b | 193 | return set_str8(data, size); |
YuuichiAkagawa | 0:b4815a079a4b | 194 | } |
YuuichiAkagawa | 0:b4815a079a4b | 195 | return false; |
YuuichiAkagawa | 0:b4815a079a4b | 196 | } |
YuuichiAkagawa | 0:b4815a079a4b | 197 | |
YuuichiAkagawa | 0:b4815a079a4b | 198 | bool uMP::set_fixstr(const char *data, uint8_t size) |
YuuichiAkagawa | 0:b4815a079a4b | 199 | { |
YuuichiAkagawa | 0:b4815a079a4b | 200 | if (size > 0x1f) { |
YuuichiAkagawa | 0:b4815a079a4b | 201 | return false; |
YuuichiAkagawa | 0:b4815a079a4b | 202 | } |
YuuichiAkagawa | 0:b4815a079a4b | 203 | if (!set_buffer((uint8_t)(TAG_FIXSTR | size))) { |
YuuichiAkagawa | 0:b4815a079a4b | 204 | return false; |
YuuichiAkagawa | 0:b4815a079a4b | 205 | } |
YuuichiAkagawa | 0:b4815a079a4b | 206 | if (!set_buffer((uint8_t*)data, size)) { |
YuuichiAkagawa | 0:b4815a079a4b | 207 | return false; |
YuuichiAkagawa | 0:b4815a079a4b | 208 | } |
YuuichiAkagawa | 0:b4815a079a4b | 209 | return true; |
YuuichiAkagawa | 0:b4815a079a4b | 210 | } |
YuuichiAkagawa | 0:b4815a079a4b | 211 | |
YuuichiAkagawa | 0:b4815a079a4b | 212 | bool uMP::set_str8(const char *data, uint8_t size) |
YuuichiAkagawa | 0:b4815a079a4b | 213 | { |
YuuichiAkagawa | 0:b4815a079a4b | 214 | if (size > 0xff) { |
YuuichiAkagawa | 0:b4815a079a4b | 215 | return false; |
YuuichiAkagawa | 0:b4815a079a4b | 216 | } |
YuuichiAkagawa | 0:b4815a079a4b | 217 | if (!set_buffer((uint8_t)TAG_STR8)) { |
YuuichiAkagawa | 0:b4815a079a4b | 218 | return false; |
YuuichiAkagawa | 0:b4815a079a4b | 219 | } |
YuuichiAkagawa | 0:b4815a079a4b | 220 | if (!set_buffer((uint8_t)size)) { |
YuuichiAkagawa | 0:b4815a079a4b | 221 | return false; |
YuuichiAkagawa | 0:b4815a079a4b | 222 | } |
YuuichiAkagawa | 0:b4815a079a4b | 223 | if (!set_buffer((uint8_t*)data, size)) { |
YuuichiAkagawa | 0:b4815a079a4b | 224 | return false; |
YuuichiAkagawa | 0:b4815a079a4b | 225 | } |
YuuichiAkagawa | 0:b4815a079a4b | 226 | return true; |
YuuichiAkagawa | 0:b4815a079a4b | 227 | } |
YuuichiAkagawa | 0:b4815a079a4b | 228 | |
YuuichiAkagawa | 0:b4815a079a4b | 229 | bool uMP::set_raw(const char *data, uint8_t size) |
YuuichiAkagawa | 0:b4815a079a4b | 230 | { |
YuuichiAkagawa | 0:b4815a079a4b | 231 | if (!set_buffer((uint8_t*)data, size)) { |
YuuichiAkagawa | 0:b4815a079a4b | 232 | return false; |
YuuichiAkagawa | 0:b4815a079a4b | 233 | } |
YuuichiAkagawa | 0:b4815a079a4b | 234 | return true; |
YuuichiAkagawa | 0:b4815a079a4b | 235 | } |
YuuichiAkagawa | 0:b4815a079a4b | 236 | |
YuuichiAkagawa | 0:b4815a079a4b | 237 | bool uMP::set_float(float f) |
YuuichiAkagawa | 0:b4815a079a4b | 238 | { |
YuuichiAkagawa | 0:b4815a079a4b | 239 | if (!set_buffer((uint8_t)TAG_FLOAT32)) { |
YuuichiAkagawa | 0:b4815a079a4b | 240 | return false; |
YuuichiAkagawa | 0:b4815a079a4b | 241 | } |
YuuichiAkagawa | 0:b4815a079a4b | 242 | f = to_be32(f); |
YuuichiAkagawa | 0:b4815a079a4b | 243 | if (!set_buffer((uint8_t*)&f, sizeof(float))) { |
YuuichiAkagawa | 0:b4815a079a4b | 244 | return false; |
YuuichiAkagawa | 0:b4815a079a4b | 245 | } |
YuuichiAkagawa | 0:b4815a079a4b | 246 | return true; |
YuuichiAkagawa | 0:b4815a079a4b | 247 | } |
YuuichiAkagawa | 0:b4815a079a4b | 248 | |
YuuichiAkagawa | 0:b4815a079a4b | 249 | bool uMP::set_double(double d) |
YuuichiAkagawa | 0:b4815a079a4b | 250 | { |
YuuichiAkagawa | 0:b4815a079a4b | 251 | if (!set_buffer((uint8_t)TAG_FLOAT64)) { |
YuuichiAkagawa | 0:b4815a079a4b | 252 | return false; |
YuuichiAkagawa | 0:b4815a079a4b | 253 | } |
YuuichiAkagawa | 0:b4815a079a4b | 254 | d = to_be64(d); |
YuuichiAkagawa | 0:b4815a079a4b | 255 | if (!set_buffer((uint8_t*)&d, sizeof(double))) { |
YuuichiAkagawa | 0:b4815a079a4b | 256 | return false; |
YuuichiAkagawa | 0:b4815a079a4b | 257 | } |
YuuichiAkagawa | 0:b4815a079a4b | 258 | return true; |
YuuichiAkagawa | 0:b4815a079a4b | 259 | } |
YuuichiAkagawa | 0:b4815a079a4b | 260 | |
YuuichiAkagawa | 0:b4815a079a4b | 261 | bool uMP::set_buffer(const uint8_t c) |
YuuichiAkagawa | 0:b4815a079a4b | 262 | { |
YuuichiAkagawa | 0:b4815a079a4b | 263 | //buffer overflow? |
YuuichiAkagawa | 0:b4815a079a4b | 264 | if ( _ptr == _nbuf) { |
YuuichiAkagawa | 0:b4815a079a4b | 265 | return false; |
YuuichiAkagawa | 0:b4815a079a4b | 266 | } |
YuuichiAkagawa | 0:b4815a079a4b | 267 | *(_buf+_ptr) = c; |
YuuichiAkagawa | 0:b4815a079a4b | 268 | _ptr++; |
YuuichiAkagawa | 0:b4815a079a4b | 269 | return true; |
YuuichiAkagawa | 0:b4815a079a4b | 270 | } |
YuuichiAkagawa | 0:b4815a079a4b | 271 | |
YuuichiAkagawa | 0:b4815a079a4b | 272 | bool uMP::set_buffer(const uint8_t *c, size_t size) |
YuuichiAkagawa | 0:b4815a079a4b | 273 | { |
YuuichiAkagawa | 0:b4815a079a4b | 274 | //buffer overflow? |
YuuichiAkagawa | 0:b4815a079a4b | 275 | if ( (_ptr+size) > _nbuf) { |
YuuichiAkagawa | 0:b4815a079a4b | 276 | return false; |
YuuichiAkagawa | 0:b4815a079a4b | 277 | } |
YuuichiAkagawa | 0:b4815a079a4b | 278 | while (size--) { |
YuuichiAkagawa | 0:b4815a079a4b | 279 | *(_buf+_ptr) = *c++; |
YuuichiAkagawa | 0:b4815a079a4b | 280 | _ptr++; |
YuuichiAkagawa | 0:b4815a079a4b | 281 | } |
YuuichiAkagawa | 0:b4815a079a4b | 282 | return true; |
YuuichiAkagawa | 0:b4815a079a4b | 283 | } |
YuuichiAkagawa | 0:b4815a079a4b | 284 | |
YuuichiAkagawa | 0:b4815a079a4b | 285 | //ByteOrder |
YuuichiAkagawa | 0:b4815a079a4b | 286 | template<typename T> T uMP::to_be16(T t) |
YuuichiAkagawa | 0:b4815a079a4b | 287 | { |
YuuichiAkagawa | 0:b4815a079a4b | 288 | uint16_t *x = (uint16_t *)&t; |
YuuichiAkagawa | 0:b4815a079a4b | 289 | *x = __REV16(*x); |
YuuichiAkagawa | 0:b4815a079a4b | 290 | return t; |
YuuichiAkagawa | 0:b4815a079a4b | 291 | } |
YuuichiAkagawa | 0:b4815a079a4b | 292 | |
YuuichiAkagawa | 0:b4815a079a4b | 293 | template<typename T> T uMP::to_be32(T t) |
YuuichiAkagawa | 0:b4815a079a4b | 294 | { |
YuuichiAkagawa | 0:b4815a079a4b | 295 | uint32_t *x = (uint32_t *)&t; |
YuuichiAkagawa | 0:b4815a079a4b | 296 | *x = __REV(*x); |
YuuichiAkagawa | 0:b4815a079a4b | 297 | return t; |
YuuichiAkagawa | 0:b4815a079a4b | 298 | } |
YuuichiAkagawa | 0:b4815a079a4b | 299 | |
YuuichiAkagawa | 0:b4815a079a4b | 300 | template<typename T> T uMP::to_be64(T t) |
YuuichiAkagawa | 0:b4815a079a4b | 301 | { |
YuuichiAkagawa | 0:b4815a079a4b | 302 | uint32_t *x = (uint32_t *)&t; |
YuuichiAkagawa | 0:b4815a079a4b | 303 | uint32_t h = __REV(*x); |
YuuichiAkagawa | 0:b4815a079a4b | 304 | uint32_t l = __REV(*(x+1)); |
YuuichiAkagawa | 0:b4815a079a4b | 305 | //swap |
YuuichiAkagawa | 0:b4815a079a4b | 306 | *x = l; |
YuuichiAkagawa | 0:b4815a079a4b | 307 | *(x+1) = h; |
YuuichiAkagawa | 0:b4815a079a4b | 308 | return t; |
YuuichiAkagawa | 0:b4815a079a4b | 309 | } |