mirror of
https://github.com/esp8266/Arduino.git
synced 2025-10-16 22:27:59 +03:00
Stream::send() (#6979)
This commit is contained in:
@@ -89,7 +89,8 @@ ssize_t mockFillInBuf (int sock, char* ccinbuf, size_t& ccinbufsize)
|
||||
if (ret == 0)
|
||||
{
|
||||
// connection closed
|
||||
return -1;
|
||||
// nothing is read
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (ret == -1)
|
||||
@@ -97,16 +98,20 @@ ssize_t mockFillInBuf (int sock, char* ccinbuf, size_t& ccinbufsize)
|
||||
if (errno != EAGAIN)
|
||||
{
|
||||
fprintf(stderr, MOCK "ClientContext::(read/peek fd=%i): filling buffer for %zd bytes: %s\n", sock, maxread, strerror(errno));
|
||||
// error
|
||||
return -1;
|
||||
}
|
||||
ret = 0;
|
||||
}
|
||||
|
||||
ccinbufsize += ret;
|
||||
return ret;
|
||||
}
|
||||
|
||||
ssize_t mockPeekBytes (int sock, char* dst, size_t usersize, int timeout_ms, char* ccinbuf, size_t& ccinbufsize)
|
||||
{
|
||||
// usersize==0: peekAvailable()
|
||||
|
||||
if (usersize > CCBUFSIZE)
|
||||
mockverbose("CCBUFSIZE(%d) should be increased by %zd bytes (-> %zd)\n", CCBUFSIZE, usersize - CCBUFSIZE, usersize);
|
||||
|
||||
@@ -114,7 +119,7 @@ ssize_t mockPeekBytes (int sock, char* dst, size_t usersize, int timeout_ms, cha
|
||||
size_t retsize = 0;
|
||||
do
|
||||
{
|
||||
if (usersize <= ccinbufsize)
|
||||
if (usersize && usersize <= ccinbufsize)
|
||||
{
|
||||
// data already buffered
|
||||
retsize = usersize;
|
||||
@@ -123,7 +128,14 @@ ssize_t mockPeekBytes (int sock, char* dst, size_t usersize, int timeout_ms, cha
|
||||
|
||||
// check incoming data data
|
||||
if (mockFillInBuf(sock, ccinbuf, ccinbufsize) < 0)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (usersize == 0 && ccinbufsize)
|
||||
// peekAvailable
|
||||
return ccinbufsize;
|
||||
|
||||
if (usersize <= ccinbufsize)
|
||||
{
|
||||
// data just received
|
||||
@@ -179,7 +191,7 @@ ssize_t mockWrite (int sock, const uint8_t* data, size_t size, int timeout_ms)
|
||||
#endif
|
||||
if (ret == -1)
|
||||
{
|
||||
fprintf(stderr, MOCK "ClientContext::read: write(%d): %s\n", sock, strerror(errno));
|
||||
fprintf(stderr, MOCK "ClientContext::write/send(%d): %s\n", sock, strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
sent += ret;
|
||||
@@ -187,6 +199,8 @@ ssize_t mockWrite (int sock, const uint8_t* data, size_t size, int timeout_ms)
|
||||
fprintf(stderr, MOCK "ClientContext::write: sent %d bytes (%zd / %zd)\n", ret, sent, size);
|
||||
}
|
||||
}
|
||||
fprintf(stderr, MOCK "ClientContext::write: total sent %zd bytes\n", sent);
|
||||
#ifdef DEBUG_ESP_WIFI
|
||||
mockverbose(MOCK "ClientContext::write: total sent %zd bytes\n", sent);
|
||||
#endif
|
||||
return sent;
|
||||
}
|
||||
|
Reference in New Issue
Block a user