diff options
author | Roman Smrž <roman.smrz@seznam.cz> | 2023-05-06 17:09:32 +0200 |
---|---|---|
committer | Roman Smrž <roman.smrz@seznam.cz> | 2023-05-06 18:54:24 +0200 |
commit | 25a1ba71e3cf4250489291f688423963aa603498 (patch) | |
tree | fb1e23060b810237316f4cde6524c0b1a66d5d0e /src/pairing.cpp | |
parent | 07f61b1ad6363cd471b7dab3f94c3160636fd6a0 (diff) |
Server and services configuration using separate objects
Diffstat (limited to 'src/pairing.cpp')
-rw-r--r-- | src/pairing.cpp | 37 |
1 files changed, 21 insertions, 16 deletions
diff --git a/src/pairing.cpp b/src/pairing.cpp index d2d71f5..dca5b03 100644 --- a/src/pairing.cpp +++ b/src/pairing.cpp @@ -21,6 +21,11 @@ using std::scoped_lock; using std::thread; using std::unique_lock; +PairingServiceBase::PairingServiceBase(Config && c): + config(move(c)) +{ +} + PairingServiceBase::~PairingServiceBase() { // There may be some threads in waitForConfirmation waiting on client @@ -35,28 +40,28 @@ PairingServiceBase::~PairingServiceBase() } } -void PairingServiceBase::onRequestInit(RequestInitHook hook) +PairingServiceBase::Config & PairingServiceBase::Config::onRequestInit(RequestInitHook hook) { - lock_guard lock(stateLock); requestInitHook = hook; + return *this; } -void PairingServiceBase::onResponse(ConfirmHook hook) +PairingServiceBase::Config & PairingServiceBase::Config::onResponse(ConfirmHook hook) { - lock_guard lock(stateLock); responseHook = hook; + return *this; } -void PairingServiceBase::onRequest(ConfirmHook hook) +PairingServiceBase::Config & PairingServiceBase::Config::onRequest(ConfirmHook hook) { - lock_guard lock(stateLock); requestHook = hook; + return *this; } -void PairingServiceBase::onRequestNonceFailed(RequestNonceFailedHook hook) +PairingServiceBase::Config & PairingServiceBase::Config::onRequestNonceFailed(RequestNonceFailedHook hook) { - lock_guard lock(stateLock); requestNonceFailedHook = hook; + return *this; } void PairingServiceBase::handle(Context & ctx) @@ -99,8 +104,8 @@ void PairingServiceBase::handle(Context & ctx) } else if (state->phase != StatePhase::NoPairing) return; - if (requestInitHook) - requestInitHook(ctx.peer()); + if (config.requestInitHook) + config.requestInitHook(ctx.peer()); state->phase = StatePhase::PeerRequest; state->idReq = idReq; @@ -120,12 +125,12 @@ void PairingServiceBase::handle(Context & ctx) return; } - if (responseHook) { + if (config.responseHook) { string confirm = confirmationNumber(nonceDigest( *state->idReq, *state->idRsp, state->nonce, *response)); std::thread(&PairingServiceBase::waitForConfirmation, - this, ctx.peer(), state, confirm, responseHook).detach(); + this, ctx.peer(), state, confirm, config.responseHook).detach(); } state->phase = StatePhase::OurRequestConfirm; @@ -143,8 +148,8 @@ void PairingServiceBase::handle(Context & ctx) *state->idReq, *state->idRsp, *reqnonce, vector<uint8_t>()); if (check != state->peerCheck) { - if (requestNonceFailedHook) - requestNonceFailedHook(ctx.peer()); + if (config.requestNonceFailedHook) + config.requestNonceFailedHook(ctx.peer()); if (state->phase < StatePhase::PairingDone) { state->phase = StatePhase::PairingFailed; ctx.afterCommit([&]() { @@ -154,12 +159,12 @@ void PairingServiceBase::handle(Context & ctx) return; } - if (requestHook) { + if (config.requestHook) { string confirm = confirmationNumber(nonceDigest( *state->idReq, *state->idRsp, *reqnonce, state->nonce)); std::thread(&PairingServiceBase::waitForConfirmation, - this, ctx.peer(), state, confirm, requestHook).detach(); + this, ctx.peer(), state, confirm, config.requestHook).detach(); } state->phase = StatePhase::PeerRequestConfirm; |