37 return clientSocket.write(
static_cast<const char *
>(data), size);
53 if (documents.size() == 0)
63 for (
const auto &doc : documents)
68 root.
print(stderr, 0);
77 IDLog(
"Dispatch command error(%d): %s\n", err_code, msg);
78 root.
print(stderr, 0);
92 connect(&d->clientSocket, &QTcpSocket::readyRead,
this, [d]()
97#if (QT_VERSION >= QT_VERSION_CHECK(5, 15, 0))
98 connect(&d->clientSocket, &QTcpSocket::errorOccurred,
this, [d,
this](QAbstractSocket::SocketError socketError)
100 connect(&d->clientSocket, qOverload<QAbstractSocket::SocketError>(&QTcpSocket::error),
this, [d,
101 this](QAbstractSocket::SocketError socketError)
104 if (d->sConnected == false)
108 INDI_UNUSED(socketError);
109 IDLog(
"Socket Error: %s\n", d->clientSocket.errorString().toLatin1().constData());
110 fprintf(stderr,
"INDI server %s/%d disconnected.\n", d->cServer.c_str(), d->cPort);
111 d->clientSocket.close();
113 serverDisconnected(-1);
126 d->clientSocket.connectToHost(d->cServer.c_str(), d->cPort);
128 if (d->clientSocket.waitForConnected(d->timeout_sec * 1000) ==
false)
130 d->sConnected =
false;
136 d->sConnected =
true;
140 d->userIoGetProperties();
149 if (d->sConnected ==
false)
152 d->sConnected =
false;
154 d->clientSocket.close();
158 d->watchDevice.unwatchDevices();
int dispatchCommand(const INDI::LilXmlElement &root, char *errmsg)
Dispatch command received from INDI server to respective devices handled by the client.
std::atomic_bool sConnected
ssize_t sendData(const void *data, size_t size) override
BaseClientQtPrivate(BaseClientQt *parent)
Class to provide basic client functionality based on Qt5 toolkit and is therefore suitable for cross-...
bool disconnectServer(int exit_code=0) override
Disconnect from INDI server. Any devices previously created will be deleted and memory cleared.
bool connectServer() override
Connect to INDI server.
BaseClientQt(QObject *parent=Q_NULLPTR)
void print(FILE *f, int level=0) const
const char * errorMessage() const
bool hasErrorMessage() const
std::list< LilXmlDocument > parseChunk(const char *data, size_t size)
@ INDI_PROPERTY_DUPLICATED
void IDLog(const char *fmt,...)
Namespace to encapsulate INDI client, drivers, and mediator classes.