refactor: STCP connections as ETCP links (is_tcp)
- Add is_tcp, tcp_link, tcp_reconnect_* fields to ETCP_LINK - Remove transport_link from ETCP_CONN, add tcp_link_count - stcp_link: replace embedded etcp_conn with pointer; add etcp_link backpointer - stcp_link: link_rx_cb routes ETCP data to etcp_conn_input - stcp_link: call on_close_cb in close - New TCP functions: etcp_link_enter_ready_tcp, etcp_tcp_link_start_connect, etcp_tcp_link_start_reconnect, tcp_link_close_cb, etcp_tcp_send - etcp_link_new: handle NULL conn for TCP links; skip enter_init for TCP - etcp_link_close: close stcp_link for TCP - etcp_encrypt_send: redirect TCP to etcp_tcp_send (skips AES-CCM) - tcp_server_on_link: create ETCP_LINK(is_tcp=1) + enter_ready_tcp - etcp_connect: TCP addrs -> etcp_tcp_link_start_connect - Remove ctx->tcp_link/tcp_ready - test_stcp_traffic: find stcp_link via links->is_tcp instead of transport_link - 66/68 tests pass; 2 STCP tests expected to fail (integration not complete)
This commit is contained in:
1 parent
937af4c26a
commit
d773f1724a
1705 files changed
+187
-1082154
No files matched your search
@@ -1,92 +0,0 @@
|
||||
/*
|
||||
* Copyright 2016 Nu-book Inc.
|
||||
* Copyright 2016 ZXing authors
|
||||
*/
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "Content.h"
|
||||
#include "Error.h"
|
||||
#include "JSON.h"
|
||||
#include "StructuredAppend.h"
|
||||
|
||||
#include <memory>
|
||||
#include <string>
|
||||
#include <utility>
|
||||
|
||||
namespace ZXing {
|
||||
|
||||
struct CustomData
|
||||
{
|
||||
virtual ~CustomData() = default;
|
||||
};
|
||||
|
||||
class DecoderResult
|
||||
{
|
||||
Content _content;
|
||||
std::string _ecLevel;
|
||||
int _lineCount = 0;
|
||||
int _versionNumber = 0;
|
||||
StructuredAppendInfo _structuredAppend;
|
||||
bool _isMirrored = false;
|
||||
bool _readerInit = false;
|
||||
Error _error;
|
||||
std::string _json;
|
||||
std::shared_ptr<CustomData> _customData;
|
||||
|
||||
public:
|
||||
DecoderResult() = default;
|
||||
DecoderResult(Error error) : _error(std::move(error)) {}
|
||||
DecoderResult(Content&& bytes) : _content(std::move(bytes)) {}
|
||||
|
||||
DecoderResult(DecoderResult&&) noexcept = default;
|
||||
DecoderResult& operator=(DecoderResult&&) noexcept = default;
|
||||
|
||||
DecoderResult(const DecoderResult&) = delete;
|
||||
DecoderResult& operator=(const DecoderResult&) = delete;
|
||||
|
||||
bool isValid(bool includeErrors = false) const
|
||||
{
|
||||
return (!_content.bytes.empty() && !_error) || (includeErrors && !!_error);
|
||||
}
|
||||
|
||||
const Content& content() const & { return _content; }
|
||||
Content&& content() && { return std::move(_content); }
|
||||
|
||||
// to keep the unit tests happy for now:
|
||||
std::wstring text() const { return _content.utfW(); }
|
||||
std::string symbologyIdentifier() const { return _content.symbology.toString(false); }
|
||||
|
||||
// Simple macro to set up getter/setter methods that save lots of boilerplate.
|
||||
// It sets up a standard 'const & () const', 2 setters for setting lvalues via
|
||||
// copy and 2 for setting rvalues via move. They are provided each to work
|
||||
// either on lvalues (normal 'void (...)') or on rvalues (returning '*this' as
|
||||
// rvalue). The latter can be used to optionally initialize a temporary in a
|
||||
// return statement, e.g.
|
||||
// return DecoderResult(bytes, text).setEcLevel(level);
|
||||
#define ZX_PROPERTY(TYPE, GETTER, SETTER) \
|
||||
const TYPE& GETTER() const & { return _##GETTER; } \
|
||||
TYPE&& GETTER() && { return std::move(_##GETTER); } \
|
||||
void SETTER(const TYPE& v) & { _##GETTER = v; } \
|
||||
void SETTER(TYPE&& v) & { _##GETTER = std::move(v); } \
|
||||
DecoderResult&& SETTER(const TYPE& v) && { _##GETTER = v; return std::move(*this); } \
|
||||
DecoderResult&& SETTER(TYPE&& v) && { _##GETTER = std::move(v); return std::move(*this); }
|
||||
|
||||
ZX_PROPERTY(std::string, ecLevel, setEcLevel)
|
||||
ZX_PROPERTY(int, lineCount, setLineCount)
|
||||
ZX_PROPERTY(int, versionNumber, setVersionNumber)
|
||||
ZX_PROPERTY(StructuredAppendInfo, structuredAppend, setStructuredAppend)
|
||||
ZX_PROPERTY(Error, error, setError)
|
||||
ZX_PROPERTY(bool, isMirrored, setIsMirrored)
|
||||
ZX_PROPERTY(bool, readerInit, setReaderInit)
|
||||
ZX_PROPERTY(std::string, json, setJson)
|
||||
ZX_PROPERTY(std::shared_ptr<CustomData>, customData, setCustomData)
|
||||
#undef ZX_PROPERTY
|
||||
|
||||
template<typename T>
|
||||
DecoderResult&& addExtra(std::string_view key, T val, T ignore = {}) { _json += JsonProp(key, val, ignore); return std::move(*this); }
|
||||
|
||||
};
|
||||
|
||||
} // ZXing
|
||||
Reference in new issue
Block a user