client: explicit ctor for builders

mixing implicit ctors and public/protected
seems to run afoul of c++17 changes.
This commit is contained in:
Michael Davidsaver
2022-09-26 16:01:35 -07:00
parent 490f59ca55
commit 4164d1b8fb
+13 -9
View File
@@ -561,7 +561,7 @@ protected:
bool _autoexec = true;
bool _syncCancel = true;
CommonBase() = default;
CommonBase() {}
CommonBase(const std::shared_ptr<Context::Pvt>& ctx, const std::string& name) : ctx(ctx), _name(name) {}
~CommonBase();
@@ -579,7 +579,7 @@ protected:
struct Args;
std::shared_ptr<Args> _args;
PRBase() = default;
PRBase() {}
PRBase(const std::shared_ptr<Context::Pvt>& ctx, const std::string& name) : CommonBase(ctx, name) {}
~PRBase();
@@ -592,7 +592,7 @@ protected:
template<typename SubBuilder, typename Base>
class CommonBuilder : public Base {
protected:
CommonBuilder() = default;
CommonBuilder() {}
constexpr CommonBuilder(const std::shared_ptr<Context::Pvt>& ctx, const std::string& name) : Base(ctx, name) {}
inline SubBuilder& _sb() { return static_cast<SubBuilder&>(*this); }
public:
@@ -663,7 +663,7 @@ class GetBuilder : public detail::CommonBuilder<GetBuilder, detail::CommonBase>
PVXS_API
std::shared_ptr<Operation> _exec_get();
public:
GetBuilder() = default;
GetBuilder() {}
GetBuilder(const std::shared_ptr<Context::Pvt>& ctx, const std::string& name, bool get) :CommonBuilder{ctx,name}, _get(get) {}
//! Callback through which result Value or an error will be delivered.
//! The functor is stored in the Operation returned by exec().
@@ -684,6 +684,7 @@ public:
}
friend struct Context::Pvt;
friend class Context;
};
GetBuilder Context::info(const std::string& name) { return GetBuilder{pvt, name, false}; }
GetBuilder Context::get(const std::string& name) { return GetBuilder{pvt, name, true}; }
@@ -696,7 +697,7 @@ class PutBuilder : public detail::CommonBuilder<PutBuilder, detail::PRBase> {
std::function<void(Result&&)> _result;
bool _doGet = true;
public:
PutBuilder() = default;
PutBuilder() {}
PutBuilder(const std::shared_ptr<Context::Pvt>& ctx, const std::string& name) :CommonBuilder{ctx,name} {}
/** If fetchPresent is true (the default). Then the Value passed to
@@ -758,6 +759,7 @@ public:
std::shared_ptr<Operation> exec();
friend struct Context::Pvt;
friend class Context;
};
PutBuilder Context::put(const std::string& name) { return PutBuilder{pvt, name}; }
@@ -766,9 +768,8 @@ PutBuilder Context::put(const std::string& name) { return PutBuilder{pvt, name};
class RPCBuilder : public detail::CommonBuilder<RPCBuilder, detail::PRBase> {
Value _argument;
std::function<void(Result&&)> _result;
friend class Context;
public:
RPCBuilder() = default;
RPCBuilder() {}
RPCBuilder(const std::shared_ptr<Context::Pvt>& ctx, const std::string& name) :CommonBuilder{ctx,name} {}
//! Callback through which result Value or an error will be delivered.
//! The functor is stored in the Operation returned by exec().
@@ -800,6 +801,7 @@ public:
std::shared_ptr<Operation> exec();
friend struct Context::Pvt;
friend class Context;
};
RPCBuilder Context::rpc(const std::string& name) { return RPCBuilder{pvt, name}; }
RPCBuilder Context::rpc(const std::string& name, const Value &arg) {
@@ -816,7 +818,7 @@ class MonitorBuilder : public detail::CommonBuilder<MonitorBuilder, detail::Comm
bool _maskConn = true;
bool _maskDisconn = false;
public:
MonitorBuilder() = default;
MonitorBuilder() {}
MonitorBuilder(const std::shared_ptr<Context::Pvt>& ctx, const std::string& name) :CommonBuilder{ctx,name} {}
/** Install FIFO not-empty event callback.
*
@@ -843,12 +845,14 @@ public:
std::shared_ptr<Subscription> exec();
friend struct Context::Pvt;
friend class Context;
};
MonitorBuilder Context::monitor(const std::string& name) { return MonitorBuilder{pvt, name}; }
class RequestBuilder : public detail::CommonBuilder<RequestBuilder, detail::CommonBase>
{
public:
RequestBuilder() {}
//! Return composed pvRequest
Value build() const {
return _buildReq();
@@ -867,7 +871,7 @@ class ConnectBuilder
std::function<void()> _onDis;
bool _syncCancel = true;
public:
ConnectBuilder() = default;
ConnectBuilder() {}
ConnectBuilder(const std::shared_ptr<Context::Pvt>& ctx, const std::string& pvname)
:ctx(ctx)
,_pvname(pvname)