41 #include <QNetworkReply> 42 #include <QNetworkAccessManager> 43 #include <QVariantMap> 45 #if QT_VERSION >= 0x050000 47 # include <QQmlParserStatus> 48 # include <QQmlNetworkAccessManagerFactory> 49 # include <QQmlEngine> 50 # define QML_QUICK_TYPE 2 51 # define QML_ENGINE QQmlEngine 52 # define QML_PARSER_STATUS QQmlParserStatus 53 # define QML_NETACC_FACTORY QQmlNetworkAccessManagerFactory 54 # define QML_LIST_PROPERTY QQmlListProperty 56 # include <QtDeclarative> 57 # include <QDeclarativeParserStatus> 58 # include <QDeclarativeNetworkAccessManagerFactory> 59 # include <QDeclarativeEngine> 61 # define QML_QUICK_TYPE 1 62 # define QML_ENGINE QDeclarativeEngine 63 # define QML_PARSER_STATUS QDeclarativeParserStatus 64 # define QML_NETACC_FACTORY QDeclarativeNetworkAccessManagerFactory 65 # define QML_LIST_PROPERTY QDeclarativeListProperty 69 class ArnNetworkAccessManagerFactory;
206 static void setup(
QML_ENGINE* qmlEngine, UseFlags flags = UseFlags::ArnLib);
208 static ArnQml& instance();
215 static QString arnRootPath();
228 static void setArnRootPath(
const QString& path);
231 static QObject *constructorArnInterface(
QML_ENGINE* engine, QJSEngine* scriptEngine);
241 QString _arnRootPath;
242 ArnNetworkAccessManagerFactory* _arnNetworkAccessManagerFactory;
291 Q_INTERFACES( QDeclarativeParserStatus)
293 Q_INTERFACES( QQmlParserStatus)
297 Q_PROPERTY( QString variantType READ variantType WRITE setVariantType NOTIFY variantTypeChanged)
299 Q_PROPERTY(
bool useUuid READ useUuid WRITE setUseUuid NOTIFY dummyNotifier)
301 Q_PROPERTY( QString path READ path WRITE setPath NOTIFY pathChanged)
304 READ type NOTIFY valueChanged)
306 Q_PROPERTY( QVariant variant READ toVariant WRITE setVariant NOTIFY valueChanged)
308 Q_PROPERTY( QString
string READ toString WRITE setValue NOTIFY valueChanged)
310 Q_PROPERTY( QByteArray bytes READ toByteArray WRITE setValue NOTIFY valueChanged)
313 Q_PROPERTY(
float num READ toReal WRITE setValue NOTIFY valueChanged)
315 Q_PROPERTY(
double num READ toReal WRITE setValue NOTIFY valueChanged)
317 Q_PROPERTY(
int intNum READ toInt WRITE setValue NOTIFY valueChanged)
320 Q_PROPERTY(
bool biDirMode READ isBiDirMode WRITE setBiDirMode NOTIFY dummyNotifier)
322 Q_PROPERTY(
bool pipeMode READ isPipeMode WRITE setPipeMode NOTIFY dummyNotifier)
324 Q_PROPERTY(
bool saveMode READ isSaveMode WRITE setSaveMode NOTIFY dummyNotifier)
326 Q_PROPERTY(
bool masterMode READ isMaster WRITE setMaster NOTIFY dummyNotifier)
328 Q_PROPERTY(
bool autoDestroyMode READ isAutoDestroy WRITE setAutoDestroy NOTIFY dummyNotifier)
330 Q_PROPERTY(
bool atomicOpProvider
331 READ isAtomicOpProvider WRITE setAtomicOpProvider NOTIFY dummyNotifier)
333 Q_PROPERTY(
bool ignoreSameValue READ isIgnoreSameValue WRITE setIgnoreSameValue NOTIFY dummyNotifier)
335 Q_PROPERTY(
int delay READ delay WRITE setDelay NOTIFY dummyNotifier)
342 void setBits(
int mask,
int value)
355 void addNum(
float value)
375 explicit ArnItemQml( QObject* parent = arnNullptr);
377 QString variantType()
const;
378 void setVariantType(
const QString& typeName);
380 QString path()
const;
385 void setPath(
const QString& path);
387 void setVariant(
const QVariant& value);
389 void setBiDirMode(
bool isBiDirMode);
390 void setPipeMode(
bool isPipeMode);
391 void setMaster(
bool isMaster);
392 void setAutoDestroy(
bool isAutoDestroy);
393 void setSaveMode(
bool isSaveMode);
394 void setAtomicOpProvider(
bool isAtomicOpPv);
398 bool useUuid()
const;
399 void setUseUuid(
bool useUuid);
401 virtual void classBegin();
402 virtual void componentComplete();
407 void variantTypeChanged();
408 void dummyNotifier();
411 virtual void itemUpdated(
const ArnLinkHandle& handleData,
const QByteArray* value = arnNullptr);
412 virtual void itemCreatedBelow(
const QString& path);
413 virtual void itemModeChangedBelow(
const QString& path, uint linkId,
Arn::ObjectMode mode);
414 virtual void timerEvent( QTimerEvent* ev);
453 Q_INTERFACES( QDeclarativeParserStatus)
455 Q_INTERFACES( QQmlParserStatus)
472 void setClientId( const QString&
id);
477 virtual
void classBegin();
478 virtual
void componentComplete();
482 void dummyNotifier();
485 virtual QString outPathConvert( const QString&
path);
486 virtual QString inPathConvert( const QString&
path);
556 Q_INTERFACES( QDeclarativeParserStatus)
558 Q_INTERFACES( QQmlParserStatus)
562 Q_PROPERTY( QString pipePath READ pipePath WRITE setPipePath NOTIFY pathChanged)
564 Q_PROPERTY(
Mode mode READ mode WRITE setMode NOTIFY dummyNotifier)
566 Q_PROPERTY( QObject* receiver READ receiver WRITE setReceiver NOTIFY dummyNotifier)
571 Q_PROPERTY(
int heartBeatSend READ getHeartBeatSend WRITE setHeartBeatSend NOTIFY dummyNotifier)
576 Q_PROPERTY(
int heartBeatCheck READ getHeartBeatCheck WRITE setHeartBeatCheck NOTIFY dummyNotifier)
598 UuidAutoDestroy = int(UuidPipe) | int(AutoDestroy)
608 explicit ArnSapiQml( QObject* parent = arnNullptr);
610 void setPipePath(
const QString&
path);
611 QString pipePath()
const;
615 void setMode( Mode m)
618 virtual void classBegin();
619 virtual void componentComplete();
623 void dummyNotifier();
630 QString _providerPrefix;
631 QString _requesterPrefix;
642 Q_INTERFACES( QDeclarativeParserStatus)
644 Q_INTERFACES( QQmlParserStatus)
648 Q_PROPERTY( QString xstring READ toXStringString WRITE fromXString NOTIFY dummyNotifier)
650 Q_PROPERTY(
int size READ size NOTIFY dummyNotifier)
664 {XStringMap::clear(
true);}
666 int indexOf(
const QString& key,
int from = 0)
const 667 {
return XStringMap::indexOf( key, from);}
670 {
return XStringMap::indexOfValue( value, from);}
672 QObject*
add(
const QString& key,
const QString& val)
673 {XStringMap::add( key, val);
return this;}
675 QObject* add( QObject* other);
677 QObject*
set(
int i,
const QString& val)
678 {XStringMap::set( i, val);
return this;}
680 QObject*
set(
const QString& key,
const QString& val)
681 {XStringMap::set( key, val);
return this;}
683 QString
key(
int i,
const QString& def = QString())
const 684 {
return XStringMap::keyString( i, def);}
686 QString
key(
const QString& value,
const QString& def = QString())
const 687 {
return XStringMap::keyString( value, def);}
689 QString
value(
int i,
const QString& def = QString())
const 690 {
return XStringMap::valueString( i, def);}
692 QString
value(
const QString& key,
const QString& def = QString())
const 693 {
return XStringMap::valueString( key, def);}
695 QObject*
remove(
int index)
696 {XStringMap::remove( index);
return this;}
698 QObject*
remove(
const QString& key)
699 {XStringMap::remove( key);
return this;}
702 {XStringMap::removeValue( val);
return this;}
705 {XStringMap::setEmptyKeysToValue();}
708 {
return XStringMap::keys();}
711 {
return XStringMap::values();}
714 {
return XStringMap::toVariantMap(
true);}
720 virtual void classBegin();
721 virtual void componentComplete();
724 void dummyNotifier();
739 Q_PROPERTY(
int quickTypeRun READ quickTypeRun)
742 QVariantMap xstringToEnum(
const QString& xstring);
746 explicit QmlMSys( QObject* parent = arnNullptr);
755 class ArnNetworkReply :
public QNetworkReply
759 explicit ArnNetworkReply( QObject* parent = arnNullptr);
761 void setOperation( QNetworkAccessManager::Operation operation)
762 { QNetworkReply::setOperation( operation);}
764 void setRequest(
const QNetworkRequest& request)
765 { QNetworkReply::setRequest( request);}
767 void setUrl(
const QUrl& url)
768 { QNetworkReply::setUrl( url);}
770 bool isFinished()
const;
771 qint64 bytesAvailable()
const;
772 bool isSequential()
const;
775 void setup(
const QString&
path);
776 QByteArray data()
const;
777 void setData(
const QByteArray& data);
780 virtual void abort();
781 virtual qint64 readData(
char *data, qint64 maxlen);
796 class ArnNetworkAccessManager :
public QNetworkAccessManager
800 explicit ArnNetworkAccessManager( QObject* parent = arnNullptr);
803 virtual QNetworkReply* createRequest( Operation op,
const QNetworkRequest &request, QIODevice *outgoingData);
814 virtual QNetworkAccessManager* create( QObject *parent);
Mode mode() const
Get the mode.
bool isHeartBeatOk() const
Get the state of heart beat.
QString value(const QString &key, const QString &def=QString()) const
void addMode(ArnInterface::ObjectMode mode)
Add general mode settings for this Arn Data Object
When calling out, uses named argument e.g "myFunc count=123".
QObject * removeValue(const QString &val)
QMultiMap< QString, QVariant > MQVariantMap
MQVariantMap toMap() const
Container class with string representation for serialized data.
void setMonitorPath(const QString &path, ArnClient *client=arnNullptr)
Set the path to be monitored.
Arn::DataType type() const
The type stored in the Arn Data Object
Arn::ObjectMode getMode() const
Use with care, link must be "referenced" before use, otherwise it might have been deleted...
#define MQ_DECLARE_FLAGS(FEStruct)
Flags.
int indexOf(const QString &key, int from=0) const
int toInt(bool *isOk=arnNullptr) const
QString value(int i, const QString &def=QString()) const
QString key(int i, const QString &def=QString()) const
When receiver method missing, send defaultCall() signal instead of error.
DataType
Data type of an Arn Data Object
QObject * add(const QString &key, const QString &val)
QString monitorPath() const
Get the monitored path
#define QML_PARSER_STATUS
int indexOfValue(const QString &value, int from=0) const
Check sequence order information from pipe. Can generate signal outOfSequence().
void addValue(int value)
AtomicOp adds an integer to an Arn Data Object
#define QML_NETACC_FACTORY
void setBits(int mask, int value, int ignoreSame=Arn::SameValue::DefaultAction)
AtomicOp assign an integer to specified bits in an Arn Data Object
void setEmptyKeysToValue()
ObjectMode
General global mode of an Arn Data Object
Provider side (opposed to requester)
#define MQ_DECLARE_OPERATORS_FOR_FLAGS(FEStruct)
QString path(Arn::NameF nameF=Arn::NameF::EmptyOk) const
Path of the Arn Data Object
void addMode(Arn::ObjectMode mode)
Add general mode settings for this Arn Data Object
When calling out, uses named argument with type e.g "myFunc count:int=123".
Send sequence order information to pipe.
Use AutoDestroy for the pipe, i.e. it is closed when tcp/ip is broken.
QString key(const QString &value, const QString &def=QString()) const
Use an unique uuid in the pipe name.
ArnInterface::ObjectMode getMode() const
If guarantied no default arguments, full member name overload is ok.
#define ARNLIBSHARED_EXPORT
void reStart()
Restart the monitor.
A client remote monitor to detect changes at server.
QString clientId() const
Get the id name of the used client
void addNum(double value)
AtomicOp adds an ARNREAL to an Arn Data Object
void addIntNum(int value)
AtomicOp adds an integer to an Arn Data Object
Handle for an Arn Data Object.
QStringList values() const