IpcClient Class

Client to send remote calls to an IpcServer. More...

Header: #include <IpcClient>
Inherits: QObject

Public Functions

IpcClient(QObject *parent = 0)
void connectToServer(const QString &hostName, int port)
QString errorToString(QAbstractSocket::SocketError error)
QUuid send(const QString &method, const QByteArray &data)
QAbstractSocket::SocketState state() const
bool waitForConnected(int msecs = 30000)
bool waitForDisconnected(int msecs = 30000)
bool waitForSent(const QUuid uuid, int msecs = 30000)

Public Slots

Signals

void connected()
void connectionError(QAbstractSocket::SocketError socketError)
void disconnected()
void received(const QString &method, const QByteArray &content)
void sendingError(const QUuid &uuid, QAbstractSocket::SocketError socketError)
void sentSuccessfully(const QUuid &uuid)

Detailed Description

The IPC system uses the normalized signal/slot signature to identify a message call. The arguments are passed as a QByteArray to the send function.

Here is a simple example:

IpcClient *client = new IpcClient(this);
client->connectToServer("127.0.0.1", 10234);
QString text = "Hello";
QByteArray content;
QDataStream out(&bytes, QIODevice::WriteOnly);
out << text;
QUuid uuid = client->send("echo(QString)", content);
client->waitForSent(uuid);

Don't use the waitFor*-Methods in your gui applications. They will block the eventloop. Instead react on the signals when the packages are sent or an error happened.

Member Function Documentation

IpcClient::IpcClient(QObject *parent = 0)

Constructs an IpcClient with parent parent to send commands to an IpcServer.

[signal] void IpcClient::connected()

Emitted once when the connection to the server is established.

[signal] void IpcClient::connectionError(QAbstractSocket::SocketError socketError)

Emitted when an error happens when connecting or disconnecting from the server socketError describes what error happened.

[slot] void IpcClient::disconnectFromServer()

Disconnects from the Server

[signal] void IpcClient::disconnected()

Emitted once when the connection to the server is terminated.

[signal] void IpcClient::received(const QString &method, const QByteArray &content)

Called when an RPC call was received. Provides the method and the content.

[signal] void IpcClient::sendingError(const QUuid &uuid, QAbstractSocket::SocketError socketError)

Emitted when an error socketError occurred while sending a Package identified by uuid.

[signal] void IpcClient::sentSuccessfully(const QUuid &uuid)

Emitted when the Package identified by uuid was successfully sent.

void IpcClient::connectToServer(const QString &hostName, int port)

Sets the Ip-Address to hostName and port to port to be used for a IPC call.

QString IpcClient::errorToString(QAbstractSocket::SocketError error)

Converts the socket error error to a printable string

QUuid IpcClient::send(const QString &method, const QByteArray &data)

Send call to server given by destination

Expects the method to be in the form of "echo(QString)" and uses data as the content of the arguments Returns a QUuid which identifies this Package

See also sentSuccessfully() and sendingError().

QAbstractSocket::SocketState IpcClient::state() const

Returns the socket state

bool IpcClient::waitForConnected(int msecs = 30000)

Waits until the client is connected to the server msecs specfies the time how long to wait Returns true when the client is connected

This call blocks your eventloop()

See also waitForDisconnected() and waitForSent().

bool IpcClient::waitForDisconnected(int msecs = 30000)

Waits until the client is disconnected from the server msecs specfies the time how long to wait Returns true when the client is disconnected

This call blocks your eventloop()

See also waitForConnected() and waitForSent().

bool IpcClient::waitForSent(const QUuid uuid, int msecs = 30000)

Waits until the Package identified by uuid is sent msecs specfies the time how long to wait Returns true when the Package is sent successfully

This call blocks your eventloop()

See also waitForConnected() and waitForDisconnected().

© 2019 Luxoft Sweden AB. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.