mirror of
https://github.com/AlexandreRouma/SDRPlusPlus.git
synced 2024-11-06 10:47:34 +01:00
Fixed rigctl server
This commit is contained in:
parent
983c4c0f87
commit
0dc2f5f7c9
@ -63,7 +63,7 @@ namespace net {
|
|||||||
connectionOpenCnd.wait(lck, [this]() { return !connectionOpen; });
|
connectionOpenCnd.wait(lck, [this]() { return !connectionOpen; });
|
||||||
}
|
}
|
||||||
|
|
||||||
int ConnClass::read(int count, uint8_t* buf) {
|
int ConnClass::read(int count, uint8_t* buf, bool enforceSize) {
|
||||||
if (!connectionOpen) { return -1; }
|
if (!connectionOpen) { return -1; }
|
||||||
std::lock_guard lck(readMtx);
|
std::lock_guard lck(readMtx);
|
||||||
int ret;
|
int ret;
|
||||||
@ -95,6 +95,8 @@ namespace net {
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!enforceSize) { return ret; }
|
||||||
|
|
||||||
beenRead += ret;
|
beenRead += ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -135,7 +137,7 @@ namespace net {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ConnClass::readAsync(int count, uint8_t* buf, void (*handler)(int count, uint8_t* buf, void* ctx), void* ctx) {
|
void ConnClass::readAsync(int count, uint8_t* buf, void (*handler)(int count, uint8_t* buf, void* ctx), void* ctx, bool enforceSize) {
|
||||||
if (!connectionOpen) { return; }
|
if (!connectionOpen) { return; }
|
||||||
// Create entry
|
// Create entry
|
||||||
ConnReadEntry entry;
|
ConnReadEntry entry;
|
||||||
@ -143,6 +145,7 @@ namespace net {
|
|||||||
entry.buf = buf;
|
entry.buf = buf;
|
||||||
entry.handler = handler;
|
entry.handler = handler;
|
||||||
entry.ctx = ctx;
|
entry.ctx = ctx;
|
||||||
|
entry.enforceSize = enforceSize;
|
||||||
|
|
||||||
// Add entry to queue
|
// Add entry to queue
|
||||||
{
|
{
|
||||||
@ -184,7 +187,7 @@ namespace net {
|
|||||||
lck.unlock();
|
lck.unlock();
|
||||||
|
|
||||||
// Read from socket and send data to the handler
|
// Read from socket and send data to the handler
|
||||||
int ret = read(entry.count, entry.buf);
|
int ret = read(entry.count, entry.buf, entry.enforceSize);
|
||||||
if (ret <= 0) {
|
if (ret <= 0) {
|
||||||
{
|
{
|
||||||
std::lock_guard lck(connectionOpenMtx);
|
std::lock_guard lck(connectionOpenMtx);
|
||||||
|
@ -33,6 +33,7 @@ namespace net {
|
|||||||
uint8_t* buf;
|
uint8_t* buf;
|
||||||
void (*handler)(int count, uint8_t* buf, void* ctx);
|
void (*handler)(int count, uint8_t* buf, void* ctx);
|
||||||
void* ctx;
|
void* ctx;
|
||||||
|
bool enforceSize;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct ConnWriteEntry {
|
struct ConnWriteEntry {
|
||||||
@ -49,9 +50,9 @@ namespace net {
|
|||||||
bool isOpen();
|
bool isOpen();
|
||||||
void waitForEnd();
|
void waitForEnd();
|
||||||
|
|
||||||
int read(int count, uint8_t* buf);
|
int read(int count, uint8_t* buf, bool enforceSize = true);
|
||||||
bool write(int count, uint8_t* buf);
|
bool write(int count, uint8_t* buf);
|
||||||
void readAsync(int count, uint8_t* buf, void (*handler)(int count, uint8_t* buf, void* ctx), void* ctx);
|
void readAsync(int count, uint8_t* buf, void (*handler)(int count, uint8_t* buf, void* ctx), void* ctx, bool enforceSize = true);
|
||||||
void writeAsync(int count, uint8_t* buf);
|
void writeAsync(int count, uint8_t* buf);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -310,7 +310,7 @@ private:
|
|||||||
//spdlog::info("New client!");
|
//spdlog::info("New client!");
|
||||||
|
|
||||||
_this->client = std::move(_client);
|
_this->client = std::move(_client);
|
||||||
_this->client->readAsync(1024, _this->dataBuf, dataHandler, _this);
|
_this->client->readAsync(1024, _this->dataBuf, dataHandler, _this, false);
|
||||||
_this->client->waitForEnd();
|
_this->client->waitForEnd();
|
||||||
_this->client->close();
|
_this->client->close();
|
||||||
|
|
||||||
@ -331,7 +331,7 @@ private:
|
|||||||
if (_this->command.size() < MAX_COMMAND_LENGTH) { _this->command += (char)data[i]; }
|
if (_this->command.size() < MAX_COMMAND_LENGTH) { _this->command += (char)data[i]; }
|
||||||
}
|
}
|
||||||
|
|
||||||
_this->client->readAsync(1024, _this->dataBuf, dataHandler, _this);
|
_this->client->readAsync(1024, _this->dataBuf, dataHandler, _this, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void commandHandler(std::string cmd) {
|
void commandHandler(std::string cmd) {
|
||||||
|
Loading…
Reference in New Issue
Block a user