7 #ifndef _QI_TYPE_PROXYSIGNAL_HPP_
8 #define _QI_TYPE_PROXYSIGNAL_HPP_
10 #include <boost/bind.hpp>
27 setup(
object, signalName);
36 object.asGenericObject(), signalName));
48 proxy.
setup(
object, signalName);
54 target.
setup(
object, signalName);
60 SignalType::disconnectAll();
72 signalName, SignalSubscriber(
78 return object->disconnect(link).async().then([](
Future<void> f)
82 qiLogError(
"qitype.proxysignal") <<
"Failed to disconnect from parent signal";
88 boost::weak_ptr<SignalBasePrivate> weakP = this->_p;
91 if (
auto p = weakP.lock())
93 this->setOnSubscribers([=](
bool enable)
96 return onSubscribe(enable,
object, signalName, link);
106 SignalType::callSubscribers(args);
116 object->metaPost(signalName, params);
123 #endif // _QITYPE_PROXYSIGNAL_HPP_
void connect(const AF &fun, FutureCallbackType type=FutureCallbackType_Auto)
static const SignalLink invalidSignalLink
void setOnSubscribers(OnSubscribers onSubscribers)
Future< void > onSubscribe(bool enable, GenericObject *object, std::string signalName, SignalLink link)
ProxySignal(AnyObject object, const std::string &signalName)
void setTriggerOverride(Trigger trigger)
#define qiLogError(...)
Log in error mode.
Signal proxy, using an AnyObject and signal id as backend.
std::vector< AnyReference > AnyReferenceVector
auto andThen(FutureCallbackType type, F &&func) -> Future< typename std::decay< typename std::result_of< F(ValueType)>::type >::type >
Same as then(), but the callback is called only if this future finishes with a value.
static AnyFunction fromDynamicFunction(DynamicFunction f)
AnyReference bounceEvent(const AnyReferenceVector args)
void makeProxySignal(SignalF< T > &target, AnyObject object, const std::string &signalName)
void setup(AnyObject object, const std::string &signalName)
std::enable_if< std::is_function< RF >::value, boost::function< RF > >::type bind(AF &&fun, Arg0 &&arg0, Args &&...args)
void triggerOverride(const GenericFunctionParameters ¶ms, MetaCallType callType, GenericObject *object, std::string signalName)
bool hasError(int msecs=FutureTimeout_Infinite) const