]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
bsdsocket.library SBTC_GET_BYTES_RECEIVED and SBTC_GET_BYTES_SENT.
authorToni Wilen <twilen@winuae.net>
Sat, 10 Oct 2020 14:10:22 +0000 (17:10 +0300)
committerToni Wilen <twilen@winuae.net>
Sat, 10 Oct 2020 14:10:22 +0000 (17:10 +0300)
bsdsocket.cpp
include/bsdsocket.h
od-win32/bsdsock.cpp

index dfbd2c72d2893173ffe23db683462598c2b2cad0..dfdf902d1128870d41519f0273216631988aaba3 100644 (file)
@@ -1433,6 +1433,8 @@ static uae_u32 strErrptr, strReleaseVer;
 #define SBTC_ERRNOLONGPTR   24
 #define SBTC_HERRNOLONGPTR  25
 #define SBTC_RELEASESTRPTR  29
+#define SBTC_GET_BYTES_RECEIVED 64
+#define SBTC_GET_BYTES_SENT 65
 
 #define LOG_FACMASK     0x03f8
 
@@ -1684,6 +1686,21 @@ static uae_u32 REGPARAM2 bsdsocklib_SocketBaseTagList(TrapContext *ctx)
                                                tagcopy(ctx, currtag, currval, tagptr, &strReleaseVer);
                                        }
                                        break;
+                               case SBTC_GET_BYTES_RECEIVED:
+                                       BSDTRACE ((_T("SBTC_GET_BYTES_RECEIVED),%08x"), currval));
+                                       if ((currtag & 0x8001) == 0x8000) { /* SBTM_GETREF */
+                                               trap_put_long(ctx, currval + 0, sb->bytesreceived >> 32);
+                                               trap_put_long(ctx, currval + 4, sb->bytesreceived >> 0);
+                                       }
+                                       break;
+                               case SBTC_GET_BYTES_SENT:
+                                       BSDTRACE ((_T("SBTC_GET_BYTES_SENT),%08x"), currval));
+                                       if ((currtag & 0x8001) == 0x8000) { /* SBTM_GETREF */
+                                               trap_put_long(ctx, currval + 0, sb->bytestransmitted >> 32);
+                                               trap_put_long(ctx, currval + 4, sb->bytestransmitted >> 0);
+                                       }
+                                       break;
+
                                default:
                                        write_log (_T("bsdsocket: WARNING: Unsupported tag type (%08x=%d) in SocketBaseTagList(%x)\n"),
                                                currtag, (currtag / 2) & SBTS_CODE, trap_get_areg(ctx, 0));
index c5c89f82c69da5d41b02d6a76b54593a40935418..9b50c9bc312ce05c8ef703bf17f85c83ae018483 100644 (file)
@@ -69,6 +69,7 @@ struct socketbase {
        uae_u32 logmask;
        uae_u32 logfacility;
        uaecptr fdcallback;
+    uae_u64 bytestransmitted, bytesreceived;
 
     unsigned int *mtable;      /* window messages allocated for asynchronous event notification */
     /* host-specific fields below */
index a03492ad86437ea714e61fc6dcc1d522bac65182..fb0d4e3cf130726c3b090c565cca173655ac482d 100644 (file)
@@ -1215,6 +1215,7 @@ void host_sendto (TrapContext *ctx, SB, uae_u32 sd, uae_u32 msg, uae_u8 *hmsg, u
                        } else {
                                realpt += sb->resultval;
                                len -= sb->resultval;
+                               sb->bytestransmitted += sb->resultval;
                                if (len <= 0)
                                        break;
                                else
@@ -1323,6 +1324,7 @@ void host_recvfrom(TrapContext *ctx, SB, uae_u32 sd, uae_u32 msg, uae_u8 *hmsg,
                                        int l = sb->resultval;
                                        realpt += l;
                                        len -= l;
+                                       sb->bytesreceived += l;
                                        waitallgot += l;
                                        if (len <= 0) {
                                                sb->resultval = waitallgot;