Skip to content

Commit

Permalink
库更新
Browse files Browse the repository at this point in the history
  • Loading branch information
188080501 committed Apr 4, 2017
1 parent 76be868 commit 6863d8e
Show file tree
Hide file tree
Showing 26 changed files with 481 additions and 126 deletions.
2 changes: 2 additions & 0 deletions lib/JQLibrary/include/JQFoundation.h
Original file line number Diff line number Diff line change
Expand Up @@ -203,7 +203,9 @@ QByteArray imageToByteArray(const QImage &image, const QString &format);

QPixmap byteArrayToPixmap(const QByteArray &byteArray);

#if ( ( defined Q_OS_MAC ) && !( defined Q_OS_IOS ) ) || ( defined Q_OS_WIN ) || ( defined Q_OS_LINUX )
QPair< int, QByteArray > startProcessAndReadOutput(const QString &program, const QStringList &arguments, const int &maximumTime = 5 * 1000);
#endif

#ifdef QT_WIDGETS_LIB
void tableWidgetSetHorizontalHeaderLabels(QTableWidget *tableWidget, const QStringList &stringList);
Expand Down
2 changes: 2 additions & 0 deletions lib/JQLibrary/src/JQFoundation.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -387,6 +387,7 @@ QPixmap JQFoundation::byteArrayToPixmap(const QByteArray &byteArray)
return Pixmap;
}

#if ( ( defined Q_OS_MAC ) && !( defined Q_OS_IOS ) ) || ( defined Q_OS_WIN ) || ( defined Q_OS_LINUX )
QPair< int, QByteArray > JQFoundation::startProcessAndReadOutput(const QString &program, const QStringList &arguments, const int &maximumTime)
{
QPair< int, QByteArray > reply;
Expand All @@ -409,6 +410,7 @@ QPair< int, QByteArray > JQFoundation::startProcessAndReadOutput(const QString &

return reply;
}
#endif

#ifdef QT_WIDGETS_LIB
void JQFoundation::tableWidgetSetHorizontalHeaderLabels(QTableWidget *tableWidget, const QStringList &stringList)
Expand Down
7 changes: 6 additions & 1 deletion lib/JQNetwork/JQNetwork.pri
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ lessThan( QT_MAJOR_VERSION, 5 ) | lessThan( QT_MINOR_VERSION, 7 ) {
error( JQNetwork request minimum Qt version is 5.7.0 )
}


JQNETWORK_BIN_NO1_DIR = $$[QT_VERSION]
JQNETWORK_BIN_NO2_DIR = $$QT_ARCH
JQNETWORK_BIN_NO3_DIR = $$[QMAKE_XSPEC]
Expand Down Expand Up @@ -125,6 +124,12 @@ contains( QT, qml ) {

SOURCES *= \
$$PWD/src/jqnetwork_clientforqml.cpp

RESOURCES *= \
$$PWD/qml/JQNetworkQml.qrc

QML_IMPORT_PATH *= \
$$PWD/qml/
}

DEFINES += JQNETWORK_COMPILE_MODE_STRING=\\\"$$JQNETWORK_COMPILE_MODE\\\"
7 changes: 6 additions & 1 deletion lib/JQNetwork/include/jqnetwork_client.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
struct JQNetworkClientSettings
{
QString dutyMark;
int maximumAutoConnectToHostWaitTime = 15 * 1000;

std::function< void( const JQNetworkConnectPointer &, const QString &hostName, const quint16 &port ) > connectToHostErrorCallback = nullptr;
std::function< void( const JQNetworkConnectPointer &, const QString &hostName, const quint16 &port ) > connectToHostTimeoutCallback = nullptr;
Expand Down Expand Up @@ -63,7 +64,11 @@ class JQNetworkClient: public QObject

void createConnect(const QString &hostName, const quint16 &port);

bool waitForCreateConnect(const QString &hostName, const quint16 &port);
bool waitForCreateConnect(
const QString &hostName,
const quint16 &port,
const int &maximumConnectToHostWaitTime = -1
);

qint32 sendPayloadData(
const QString &hostName,
Expand Down
15 changes: 12 additions & 3 deletions lib/JQNetwork/include/jqnetwork_clientforqml.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,27 +16,33 @@
// Qt lib import
#include <QJSValue>
#include <QJSValueList>
#include <QDateTime>

// JQNetwork lib import
#include <JQNetworkFoundation>

#ifdef QT_QML_LIB
# define JQNETWORKCLIENTFORQML_REGISTERTYPE \
qmlRegisterType< JQNetworkClientForQml >( "JQNetwork", 1, 0, "JQNetworkClientForQml" );
# define JQNETWORKCLIENTFORQML_REGISTERTYPE( engine ) \
qmlRegisterType< JQNetworkClientForQml >( "JQNetworkClientForQml", 1, 0, "JQNetworkClientForQml" ); \
engine.addImportPath( ":/JQNetwork/" );
#endif

class JQNetworkClientForQml: public QObject
{
Q_OBJECT

public:
JQNetworkClientForQml() = default;
JQNetworkClientForQml();

~JQNetworkClientForQml() = default;

public slots:
bool beginClient();

QVariantMap test() { return { { "key", QDateTime::currentDateTime() }, { "key2", QByteArray::fromHex( "00112233" ) } }; }

void print(const QVariant &d) { qDebug() << d; }

void createConnect(const QString &hostName, const quint16 &port);

void sendPayloadData(
Expand All @@ -48,6 +54,9 @@ public slots:
QJSValue failCallback
);

private Q_SLOTS:
inline void runOnClientThread(const std::function<void()> &callback);

signals:
void connectToHostError(const QString &hostName, const quint16 &port);

Expand Down
5 changes: 5 additions & 0 deletions lib/JQNetwork/include/jqnetwork_clientforqml.inc
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,9 @@
// JQNetwork lib import
#include "jqnetwork_clientforqml.h"

inline void JQNetworkClientForQml::runOnClientThread(const std::function<void()> &callback)
{
callback();
}

#endif//JQNETWORK_INCLUDE_JQNETWORK_CLIENGFORQML_INC
7 changes: 6 additions & 1 deletion lib/JQNetwork/include/jqnetwork_connect.h
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,8 @@ struct JQNetworkConnectSettings
std::function< QString( const JQNetworkConnectPointer &, const JQNetworkPackageSharedPointer &, const QString & ) > filePathProvider = nullptr;

void setFilePathProviderToDefaultDir();

void setFilePathProviderToDir(const QDir &dir);
};

class JQNetworkConnect: public QObject
Expand Down Expand Up @@ -176,7 +178,10 @@ private Q_SLOTS:

void onDataTransportPackageReceived(const JQNetworkPackageSharedPointer &package);

void onFileDataTransportPackageReceived(const JQNetworkPackageSharedPointer &package);
bool onFileDataTransportPackageReceived(
const JQNetworkPackageSharedPointer &package,
const bool &callbackOnFinish
);

void onReadyToDelete();

Expand Down
5 changes: 4 additions & 1 deletion lib/JQNetwork/include/jqnetwork_foundation.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
#include <QVariant>
#include <QHostAddress>

#define JQNETWORK_VERSIONNUMBER QVersionNumber( 0, 5, 2 )
#define JQNETWORK_VERSIONNUMBER QVersionNumber( 0, 5, 5 )

#define JQNETWORKPACKAGE_BOOTFLAG qint8( 0x7d )
#define JQNETWORKPACKAGE_PAYLOADDATATRANSPORTPACKGEFLAG qint8( 0x1 )
Expand Down Expand Up @@ -57,6 +57,7 @@ class QJsonArray;
class QJsonValue;
class QJsonDocument;
class QFile;
class QDir;
class QFileInfo;
class QTcpSocket;
class QTcpServer;
Expand Down Expand Up @@ -88,6 +89,8 @@ typedef QPointer< JQNetworkProcessor > JQNetworkProcessorPointer;
typedef QPointer< JQNetworkClient > JQNetworkClientPointer;
typedef QPointer< JQNetworkLan > JQNetworkLanPointer;

typedef std::shared_ptr< void > JQNetworkVoidSharedPointer;

typedef QSharedPointer< JQNetworkPackage > JQNetworkPackageSharedPointer;
typedef QSharedPointer< JQNetworkConnect > JQNetworkConnectSharedPointer;
typedef QSharedPointer< JQNetworkConnectPool > JQNetworkConnectPoolSharedPointer;
Expand Down
8 changes: 3 additions & 5 deletions lib/JQNetwork/include/jqnetwork_package.h
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ class JQNetworkPackage
static JQNetworkPackageSharedPointer readPackage(QByteArray &rawData);

static QList< JQNetworkPackageSharedPointer > createPayloadTransportPackages(
const QString &targerActionFlag,
const QString &targetActionFlag,
const QByteArray &payloadData,
const QVariantMap &appendData,
const qint32 &randomFlag,
Expand All @@ -51,7 +51,7 @@ class JQNetworkPackage
);

static JQNetworkPackageSharedPointer createFileTransportPackage(
const QString &targerActionFlag,
const QString &targetActionFlag,
const QFileInfo &fileInfo,
const QByteArray &fileData,
const QVariantMap &appendData,
Expand Down Expand Up @@ -90,8 +90,6 @@ class JQNetworkPackage

inline int metaDataSize() const;

inline QString metaDataActionFlag() const;

inline QByteArray payloadData() const;

inline int payloadDataSize() const;
Expand All @@ -107,7 +105,7 @@ class JQNetworkPackage

inline QVariantMap metaDataInVariantMap() const;

inline QString targerActionFlag() const;
inline QString targetActionFlag() const;

inline QVariantMap appendData() const;

Expand Down
9 changes: 2 additions & 7 deletions lib/JQNetwork/include/jqnetwork_package.inc
Original file line number Diff line number Diff line change
Expand Up @@ -86,11 +86,6 @@ inline int JQNetworkPackage::metaDataSize() const
return metaData_.size();
}

inline QString JQNetworkPackage::metaDataActionFlag() const
{
return "actionFlag";
}

inline QByteArray JQNetworkPackage::payloadData() const
{
return payloadData_;
Expand Down Expand Up @@ -126,9 +121,9 @@ inline QVariantMap JQNetworkPackage::metaDataInVariantMap() const
return metaDataInVariantMap_;
}

inline QString JQNetworkPackage::targerActionFlag() const
inline QString JQNetworkPackage::targetActionFlag() const
{
return ( metaDataInVariantMap_.contains( "targerActionFlag" ) ) ? ( metaDataInVariantMap_[ "targerActionFlag" ].toString() ) : ( QString() );
return ( metaDataInVariantMap_.contains( "targetActionFlag" ) ) ? ( metaDataInVariantMap_[ "targetActionFlag" ].toString() ) : ( QString() );
}

inline QVariantMap JQNetworkPackage::appendData() const
Expand Down
7 changes: 7 additions & 0 deletions lib/JQNetwork/include/jqnetwork_processor.h
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,13 @@ class JQNetworkProcessor: public QObject
protected:
JQNetworkConnectPointer currentThreadConnect();

private:
inline static void deleteByteArray(QByteArray *ptr);

inline static void deleteVariantMap(QVariantMap *ptr);

static void deleteFileInfo(QFileInfo *ptr);

private:
static QSet< QString > exceptionSlots_;

Expand Down
10 changes: 10 additions & 0 deletions lib/JQNetwork/include/jqnetwork_processor.inc
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,14 @@
// JQNetwork lib import
#include "jqnetwork_processor.h"

inline void JQNetworkProcessor::deleteByteArray(QByteArray *ptr)
{
delete ptr;
}

inline void JQNetworkProcessor::deleteVariantMap(QVariantMap *ptr)
{
delete ptr;
}

#endif//JQNETWORK_INCLUDE_JQNETWORK_PROCESSOR_INC
5 changes: 4 additions & 1 deletion lib/JQNetwork/include/jqnetwork_server.h
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,8 @@ class JQNetworkServer: public QObject

void registerProcessor(const JQNetworkProcessorPointer &processor);

inline QSet< QString > availableProcessorMethodNames() const;

private:
void incomingConnection(const qintptr &socketDescriptor);

Expand Down Expand Up @@ -128,7 +130,8 @@ class JQNetworkServer: public QObject
QString nodeMarkSummary_;

// Processor
QMap< QString, std::function< void( const JQNetworkConnectPointer &, const JQNetworkPackageSharedPointer & ) > > processor_;
QSet< JQNetworkProcessor * > processors_;
QMap< QString, std::function< void( const JQNetworkConnectPointer &, const JQNetworkPackageSharedPointer & ) > > processorCallbacks_;
};

// inc import
Expand Down
5 changes: 5 additions & 0 deletions lib/JQNetwork/include/jqnetwork_server.inc
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,11 @@ inline QString JQNetworkServer::nodeMarkSummary() const
return nodeMarkSummary_;
}

inline QSet< QString > JQNetworkServer::availableProcessorMethodNames() const
{
return QSet< QString >::fromList( processorCallbacks_.keys() );
}

inline void JQNetworkServer::onConnectToHostError(const JQNetworkConnectPointer &connect, const JQNetworkConnectPoolPointer &)
{
if ( !serverSettings_->connectToHostErrorCallback ) { return; }
Expand Down
14 changes: 14 additions & 0 deletions lib/JQNetwork/qml/JQNetwork/JQNetworkClient.qml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import QtQuick 2.8
import JQNetworkClientForQml 1.0

JQNetworkClientForQml {
id: jqNetworkClientForQml

function onSendSucceed( callback, received ) {
callback( received );
}

function onSendFail( callback ) {
callback();
}
}
3 changes: 3 additions & 0 deletions lib/JQNetwork/qml/JQNetwork/qmldir
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
module JQNetwork

JQNetworkClient 1.0 JQNetworkClient.qml
6 changes: 6 additions & 0 deletions lib/JQNetwork/qml/JQNetworkQml.qrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
<RCC>
<qresource prefix="/JQNetwork">
<file>JQNetwork/JQNetworkClient.qml</file>
<file>JQNetwork/qmldir</file>
</qresource>
</RCC>
24 changes: 22 additions & 2 deletions lib/JQNetwork/src/jqnetwork_client.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,11 @@ void JQNetworkClient::createConnect(const QString &hostName, const quint16 &port
);
}

bool JQNetworkClient::waitForCreateConnect(const QString &hostName, const quint16 &port)
bool JQNetworkClient::waitForCreateConnect(
const QString &hostName,
const quint16 &port,
const int &maximumConnectToHostWaitTime
)
{
QSharedPointer< QSemaphore > semaphore( new QSemaphore );
const auto &&hostKey = QString( "%1:%2" ).arg( hostName, QString::number( port ) );
Expand All @@ -170,7 +174,10 @@ bool JQNetworkClient::waitForCreateConnect(const QString &hostName, const quint1

mutex_.unlock();

const auto &&acquireSucceed = semaphore->tryAcquire( 1, connectSettings_->maximumConnectToHostWaitTime );
const auto &&acquireSucceed = semaphore->tryAcquire(
1,
( maximumConnectToHostWaitTime == -1 ) ? ( connectSettings_->maximumConnectToHostWaitTime ) : ( maximumConnectToHostWaitTime )
);

mutex_.lock();

Expand Down Expand Up @@ -238,6 +245,19 @@ JQNetworkConnectPointer JQNetworkClient::getConnect(const QString &hostName, con
return connect;
}

const auto &&autoConnectSucceed = this->waitForCreateConnect( hostName, port, clientSettings_->maximumAutoConnectToHostWaitTime );

if ( !autoConnectSucceed ) { return { }; }

for ( const auto &connectPool: this->connectPools_ )
{
auto connect = connectPool->getConnectByHostAndPort( hostName, port );

if ( !connect ) { continue; }

return connect;
}

return { };
}

Expand Down
Loading

0 comments on commit 6863d8e

Please sign in to comment.