Skip to content

Commit b59c578

Browse files
committed
impr: Clang-Tidy cleanup
1 parent 803e4aa commit b59c578

File tree

11 files changed

+54
-68
lines changed

11 files changed

+54
-68
lines changed

.gitignore

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,4 @@
11
.idea
2-
.vscode
2+
.vscode
3+
4+
CMakeLists.txt

src/SerialTransport.h

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,17 +13,15 @@
1313
#define SERIALTRANSPORT_H
1414
#include "transport.h"
1515

16-
class SerialTransport: public ITransport {
16+
class SerialTransport final : public ITransport {
1717

1818
Stream* _stream;
1919

2020
public:
2121

22-
SerialTransport(Stream* stream): _stream(stream){}
22+
explicit SerialTransport(Stream* stream): _stream(stream){}
2323

24-
SerialTransport(Stream& stream): _stream(&stream){}
25-
26-
void begin(){}
24+
explicit SerialTransport(Stream& stream): _stream(&stream){}
2725

2826
bool available() override {
2927
return _stream->available();

src/client.h

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -13,31 +13,24 @@
1313
#define RPCLITE_CLIENT_H
1414
#include "error.h"
1515
#include "decoder_manager.h"
16-
#include "SerialTransport.h"
1716

1817

1918
class RPCClient {
20-
RpcDecoder<>* decoder = nullptr;
19+
RpcDecoder<>* decoder;
2120

2221
public:
2322
RpcError lastError;
2423

25-
RPCClient(ITransport& t) : decoder(&RpcDecoderManager<>::getDecoder(t)) {}
26-
27-
// This constructor was removed because it leads to decoder duplication
28-
// RPCClient(Stream& stream) {
29-
// ITransport* transport = (ITransport*) new SerialTransport(stream);
30-
// decoder = &RpcDecoderManager<>::getDecoder(*transport);
31-
// }
24+
explicit RPCClient(ITransport& t) : decoder(&RpcDecoderManager<>::getDecoder(t)) {}
3225

3326
template<typename... Args>
34-
void notify(const MsgPack::str_t method, Args&&... args) {
27+
void notify(const MsgPack::str_t& method, Args&&... args) {
3528
uint32_t _id;
3629
decoder->send_call(NOTIFY_MSG, method, _id, std::forward<Args>(args)...);
3730
}
3831

3932
template<typename RType, typename... Args>
40-
bool call(const MsgPack::str_t method, RType& result, Args&&... args) {
33+
bool call(const MsgPack::str_t& method, RType& result, Args&&... args) {
4134

4235
uint32_t msg_id_wait;
4336

@@ -57,7 +50,7 @@ class RPCClient {
5750
}
5851

5952
template<typename... Args>
60-
bool send_rpc(const MsgPack::str_t method, uint32_t& wait_id, Args&&... args) {
53+
bool send_rpc(const MsgPack::str_t& method, uint32_t& wait_id, Args&&... args) {
6154
uint32_t msg_id;
6255
if (decoder->send_call(CALL_MSG, method, msg_id, std::forward<Args>(args)...)) {
6356
wait_id = msg_id;

src/decoder.h

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,10 @@ template<size_t BufferSize = MAX_BUFFER_SIZE>
2727
class RpcDecoder {
2828

2929
public:
30-
RpcDecoder(ITransport& transport) : _transport(transport) {}
30+
explicit RpcDecoder(ITransport& transport) : _transport(transport) {}
3131

3232
template<typename... Args>
33-
bool send_call(const int call_type, const MsgPack::str_t method, uint32_t& msg_id, Args&&... args) {
33+
bool send_call(const int call_type, const MsgPack::str_t& method, uint32_t& msg_id, Args&&... args) {
3434

3535
if (call_type!=CALL_MSG && call_type!=NOTIFY_MSG) return false;
3636

@@ -89,7 +89,7 @@ class RpcDecoder {
8989

9090
}
9191

92-
bool send_response(const MsgPack::Packer& packer) {
92+
bool send_response(const MsgPack::Packer& packer) const {
9393
return send(reinterpret_cast<const uint8_t*>(packer.data()), packer.size()) == packer.size();
9494
}
9595

@@ -111,7 +111,6 @@ class RpcDecoder {
111111
};
112112

113113
int msg_type;
114-
uint32_t msg_id;
115114
MsgPack::str_t method;
116115
MsgPack::arr_size_t req_size;
117116

@@ -122,6 +121,7 @@ class RpcDecoder {
122121
}
123122

124123
if (msg_type == CALL_MSG && req_size.size() == REQUEST_SIZE) {
124+
uint32_t msg_id;
125125
if (!unpacker.deserialize(msg_id, method)) {
126126
consume(_packet_size);
127127
reset_packet();
@@ -204,30 +204,30 @@ class RpcDecoder {
204204

205205
}
206206

207-
inline bool packet_incoming() const { return _packet_size >= MIN_RPC_BYTES; }
207+
bool packet_incoming() const { return _packet_size >= MIN_RPC_BYTES; }
208208

209-
inline int packet_type() const { return _packet_type; }
209+
int packet_type() const { return _packet_type; }
210210

211211
size_t get_packet_size() const { return _packet_size;}
212212

213-
inline size_t size() const {return _bytes_stored;}
213+
size_t size() const {return _bytes_stored;}
214214

215215
friend class DecoderTester;
216216

217217
private:
218218
ITransport& _transport;
219-
uint8_t _raw_buffer[BufferSize];
219+
uint8_t _raw_buffer[BufferSize] = {};
220220
size_t _bytes_stored = 0;
221221
int _packet_type = NO_MSG;
222222
size_t _packet_size = 0;
223223
uint32_t _msg_id = 0;
224224

225-
inline bool buffer_full() const { return _bytes_stored == BufferSize; }
225+
bool buffer_full() const { return _bytes_stored == BufferSize; }
226226

227-
inline bool buffer_empty() const { return _bytes_stored == 0;}
227+
bool buffer_empty() const { return _bytes_stored == 0;}
228228

229229
// This is a blocking send, under the assumption _transport.write will always succeed eventually
230-
inline size_t send(const uint8_t* data, const size_t size) {
230+
size_t send(const uint8_t* data, const size_t size) const {
231231

232232
size_t offset = 0;
233233

src/dispatcher.h

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@ struct DispatchEntry {
2424
template<size_t N>
2525
class RpcFunctionDispatcher {
2626
public:
27+
28+
RpcFunctionDispatcher() = default;
29+
2730
template<typename F>
2831
bool bind(MsgPack::str_t name, F&& f, MsgPack::str_t tag="") {
2932
if (_count >= N) return false;
@@ -34,7 +37,7 @@ class RpcFunctionDispatcher {
3437
return true;
3538
}
3639

37-
bool isBound(MsgPack::str_t name) const {
40+
bool isBound(MsgPack::str_t& name) const {
3841
for (size_t i = 0; i < _count; ++i) {
3942
if (_entries[i].name == name) {
4043
return true;
@@ -43,7 +46,7 @@ class RpcFunctionDispatcher {
4346
return false;
4447
}
4548

46-
bool hasTag(MsgPack::str_t name, MsgPack::str_t tag) const {
49+
bool hasTag(MsgPack::str_t& name, MsgPack::str_t& tag) const {
4750
for (size_t i = 0; i < _count; ++i) {
4851
if (_entries[i].name == name && _entries[i].tag == tag) {
4952
return true;
@@ -52,7 +55,7 @@ class RpcFunctionDispatcher {
5255
return false;
5356
}
5457

55-
bool call(MsgPack::str_t name, MsgPack::Unpacker& unpacker, MsgPack::Packer& packer) {
58+
bool call(MsgPack::str_t& name, MsgPack::Unpacker& unpacker, MsgPack::Packer& packer) {
5659
for (size_t i = 0; i < _count; ++i) {
5760
if (_entries[i].name == name) {
5861
return (*_entries[i].fn)(unpacker, packer);

src/error.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
#ifndef RPCLITE_ERROR_H
1313
#define RPCLITE_ERROR_H
1414

15+
#include <utility>
16+
1517
#include "MsgPack.h"
1618

1719
#define NO_ERR 0x00
@@ -29,8 +31,8 @@ struct RpcError {
2931
traceback = "";
3032
}
3133

32-
RpcError(int c, const MsgPack::str_t& tb)
33-
: code(c), traceback(tb) {}
34+
RpcError(const int c, MsgPack::str_t tb)
35+
: code(c), traceback(std::move(tb)) {}
3436

3537
MSGPACK_DEFINE(code, traceback); // -> [code, traceback]
3638
};

src/request.h

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -21,24 +21,15 @@ template<size_t BufferSize = DEFAULT_RPC_BUFFER_SIZE>
2121
class RPCRequest {
2222

2323
public:
24-
uint8_t buffer[BufferSize];
24+
uint8_t buffer[BufferSize] = {};
2525
size_t size = 0;
2626
int type = NO_MSG;
2727
uint32_t msg_id = 0;
2828
MsgPack::str_t method;
2929
MsgPack::Packer packer;
3030
MsgPack::Unpacker unpacker;
3131

32-
// void print(){
33-
34-
// Serial.print("internal buffer ");
35-
// for (size_t i=0; i<size; i++){
36-
// Serial.print(buffer[i], HEX);
37-
// }
38-
// Serial.println("");
39-
// }
40-
41-
size_t get_buffer_size() const {
32+
static size_t get_buffer_size() {
4233
return BufferSize;
4334
}
4435

src/rpclite_utils.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@
1919
namespace RpcUtils {
2020
namespace detail {
2121

22-
#define WRONG_MSG -2
23-
#define NO_MSG -1
22+
#define WRONG_MSG (-2)
23+
#define NO_MSG (-1)
2424
#define CALL_MSG 0
2525
#define RESP_MSG 1
2626
#define NOTIFY_MSG 2
@@ -48,12 +48,12 @@ inline bool unpackTypedArray(MsgPack::Unpacker& unpacker, size_t& size, int& typ
4848

4949
size = 0;
5050
for (size_t i=0; i<sz.size(); i++){
51-
if ((i==0)) {
51+
if (i==0) {
5252
if (unpacker.isInt() || unpacker.isUInt()) {
5353
unpacker.deserialize(rpc_type);
5454
type = rpc_type;
5555
size++;
56-
continue; // First element must be the type
56+
continue; // the First element must be the type
5757
} else {
5858
type = WRONG_MSG; // Not a valid type
5959
}

src/server.h

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -12,33 +12,27 @@
1212
#ifndef RPCLITE_SERVER_H
1313
#define RPCLITE_SERVER_H
1414

15+
#include <utility>
16+
1517
#include "request.h"
1618
#include "error.h"
17-
#include "wrapper.h"
1819
#include "dispatcher.h"
1920
#include "decoder.h"
2021
#include "decoder_manager.h"
21-
#include "SerialTransport.h"
2222

2323
#define MAX_CALLBACKS 100
2424

2525
class RPCServer {
2626

2727
public:
28-
RPCServer(ITransport& t) : decoder(&RpcDecoderManager<>::getDecoder(t)) {}
29-
30-
// This constructor was removed because it leads to decoder duplication
31-
// RPCServer(Stream& stream) {
32-
// ITransport* transport = (ITransport*) new SerialTransport(stream);
33-
// decoder = &RpcDecoderManager<>::getDecoder(*transport);
34-
// }
28+
explicit RPCServer(ITransport& t) : decoder(&RpcDecoderManager<>::getDecoder(t)) {}
3529

3630
template<typename F>
3731
bool bind(const MsgPack::str_t& name, F&& func, MsgPack::str_t tag=""){
3832
return dispatcher.bind(name, func, tag);
3933
}
4034

41-
bool hasTag(MsgPack::str_t name, MsgPack::str_t tag){
35+
bool hasTag(MsgPack::str_t name, MsgPack::str_t tag) const {
4236
return dispatcher.hasTag(name, tag);
4337
}
4438

@@ -48,20 +42,21 @@ class RPCServer {
4842

4943
if (!get_rpc(req)) return; // Populate local request
5044

51-
process_request(req); // Process local data
45+
process_request(req); // Process local data
5246

53-
send_response(req); // Send from local data
47+
send_response(req); // Send local data
5448

5549
}
5650

57-
bool get_rpc(RPCRequest<>& req, MsgPack::str_t tag="") {
51+
template<size_t RpcSize = DEFAULT_RPC_BUFFER_SIZE>
52+
bool get_rpc(RPCRequest<RpcSize>& req, MsgPack::str_t tag="") {
5853
decoder->decode();
5954

6055
MsgPack::str_t method = decoder->fetch_rpc_method();
6156

62-
if (method == "" || !hasTag(method, tag)) return false;
57+
if (method == "" || !dispatcher.hasTag(method, tag)) return false;
6358

64-
req.size = decoder->get_request(req.buffer, req.get_buffer_size()); // todo overload get_request(RPCRequest& req) so all the request info is in req
59+
req.size = decoder->get_request(req.buffer, RpcSize);
6560
return req.size > 0;
6661
}
6762

@@ -78,7 +73,7 @@ class RPCServer {
7873

7974
}
8075

81-
bool send_response(RPCRequest<>& req) {
76+
bool send_response(const RPCRequest<>& req) const {
8277

8378
if (req.type == NO_MSG || req.packer.size() == 0) {
8479
return true; // No response to send

src/transport.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,9 @@ class ITransport {
1616
// Transport abstraction interface
1717

1818
public:
19-
virtual size_t write(const uint8_t* data, const size_t size) = 0;
19+
virtual ~ITransport() = default;
20+
21+
virtual size_t write(const uint8_t* data, size_t size) = 0;
2022
virtual size_t read(uint8_t* buffer, size_t size) = 0;
2123
virtual size_t read_byte(uint8_t& r) = 0;
2224
virtual bool available() = 0;

0 commit comments

Comments
 (0)