37 return clientSocket.write(
static_cast<const char *
>(data), size);
53 if (documents.size() == 0)
62 for (
const auto &doc: documents)
67 root.
print(stderr, 0);
76 IDLog(
"Dispatch command error(%d): %s\n", err_code, msg);
77 root.
print(stderr, 0);
91 connect(&d->clientSocket, &QTcpSocket::readyRead,
this, [d]()
96 #if (QT_VERSION >= QT_VERSION_CHECK(5, 15, 0))
97 connect(&d->clientSocket, &QTcpSocket::errorOccurred,
this, [d,
this](QAbstractSocket::SocketError socketError)
99 connect(&d->clientSocket, qOverload<QAbstractSocket::SocketError>(&QTcpSocket::error),
this, [d,
this](QAbstractSocket::SocketError socketError)
102 if (d->sConnected == false)
106 INDI_UNUSED(socketError);
107 IDLog(
"Socket Error: %s\n", d->clientSocket.errorString().toLatin1().constData());
108 fprintf(stderr,
"INDI server %s/%d disconnected.\n", d->cServer.c_str(), d->cPort);
109 d->clientSocket.close();
111 serverDisconnected(-1);
124 d->clientSocket.connectToHost(d->cServer.c_str(), d->cPort);
126 if (d->clientSocket.waitForConnected(d->timeout_sec * 1000) ==
false)
128 d->sConnected =
false;
134 d->sConnected =
true;
138 d->userIoGetProperties();
147 if (d->sConnected ==
false)
150 d->sConnected =
false;
152 d->clientSocket.close();
156 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.