2011-01-25 15:58 UTC+0100 Viktor Szakats (harbour.01 syenar.hu)

* contrib/hbnetio/utils/netiosrv/netiosrv.prg
    * Eliminated netio_srvSocket() call.
    + Displaying bytes sent and received.
    + Displaying connection status.
    ; TOFIX: NETIO_SRVINFO_PEERADDRESS doesn't seem to work, returning NIL (or nothing),
             it's possible I'm missing something.
This commit is contained in:
Viktor Szakats
2011-01-25 14:58:22 +00:00
parent 9b70178aee
commit 6aa074cd5b
2 changed files with 56 additions and 15 deletions

View File

@@ -16,6 +16,14 @@
The license applies to all entries newer than 2009-04-28.
*/
2011-01-25 15:58 UTC+0100 Viktor Szakats (harbour.01 syenar.hu)
* contrib/hbnetio/utils/netiosrv/netiosrv.prg
* Eliminated netio_srvSocket() call.
+ Displaying bytes sent and received.
+ Displaying connection status.
; TOFIX: NETIO_SRVINFO_PEERADDRESS doesn't seem to work, returning NIL (or nothing),
it's possible I'm missing something.
2011-01-25 15:26 UTC+0100 Viktor Szakats (harbour.01 syenar.hu)
* contrib/hbnetio/utils/netiosrv/netiosrv.hbp
! Corrected relative path to hbnetio.hbc

View File

@@ -28,6 +28,8 @@
#include "inkey.ch"
#include "setcurs.ch"
#include "hbnetio.ch"
#include "hbgtinfo.ch"
#include "hbhrb.ch"
#include "hbsocket.ch"
@@ -55,9 +57,8 @@ REQUEST HB_MT
#define _NETIOSRV_MAX_ 10
#define _NETIOSRV_CONN_pConnection 1
#define _NETIOSRV_CONN_aAddrPeer 2
#define _NETIOSRV_CONN_tStart 3
#define _NETIOSRV_CONN_MAX_ 3
#define _NETIOSRV_CONN_tStart 2
#define _NETIOSRV_CONN_MAX_ 2
PROCEDURE Main( ... )
LOCAL netiosrv[ _NETIOSRV_MAX_ ]
@@ -256,41 +257,39 @@ PROCEDURE Main( ... )
RETURN
STATIC FUNCTION netiosrv_callback( netiosrv, pConnectionSocket )
LOCAL hSrvSocket := netio_srvSocket( pConnectionSocket )
netiosrv_conn_register( netiosrv, pConnectionSocket, hSrvSocket )
netiosrv_conn_register( netiosrv, pConnectionSocket )
BEGIN SEQUENCE
netio_server( pConnectionSocket )
END SEQUENCE
netiosrv_conn_unregister( netiosrv, hSrvSocket )
netiosrv_conn_unregister( netiosrv, pConnectionSocket )
RETURN NIL
STATIC PROCEDURE netiosrv_conn_register( netiosrv, pConnectionSocket, hSrvSocket )
STATIC PROCEDURE netiosrv_conn_register( netiosrv, pConnectionSocket )
LOCAL nconn[ _NETIOSRV_CONN_MAX_ ]
nconn[ _NETIOSRV_CONN_pConnection ] := pConnectionSocket
nconn[ _NETIOSRV_CONN_aAddrPeer ] := hb_socketGetPeerName( hSrvSocket )
nconn[ _NETIOSRV_CONN_tStart ] := hb_DateTime()
hb_mutexLock( netiosrv[ _NETIOSRV_mtxConnection ] )
IF !( hSrvSocket $ netiosrv[ _NETIOSRV_hConnection ] )
netiosrv[ _NETIOSRV_hConnection ][ hSrvSocket ] := nconn
IF !( pConnectionSocket $ netiosrv[ _NETIOSRV_hConnection ] )
netiosrv[ _NETIOSRV_hConnection ][ pConnectionSocket ] := nconn
ENDIF
hb_mutexUnlock( netiosrv[ _NETIOSRV_mtxConnection ] )
RETURN
STATIC PROCEDURE netiosrv_conn_unregister( netiosrv, hSrvSocket )
STATIC PROCEDURE netiosrv_conn_unregister( netiosrv, pConnectionSocket )
hb_mutexLock( netiosrv[ _NETIOSRV_mtxConnection ] )
IF hSrvSocket $ netiosrv[ _NETIOSRV_hConnection ]
hb_HDel( netiosrv[ _NETIOSRV_hConnection ], hSrvSocket )
IF pConnectionSocket $ netiosrv[ _NETIOSRV_hConnection ]
hb_HDel( netiosrv[ _NETIOSRV_hConnection ], pConnectionSocket )
ENDIF
hb_mutexUnlock( netiosrv[ _NETIOSRV_mtxConnection ] )
@@ -300,21 +299,55 @@ STATIC PROCEDURE netiosrv_conn_unregister( netiosrv, hSrvSocket )
PROCEDURE cmdConnInfo( netiosrv )
LOCAL nconn
LOCAL nStatus
LOCAL nFilesCount
LOCAL nBytesSent
LOCAL nBytesReceived
LOCAL aAddressPeer
hb_mutexLock( netiosrv[ _NETIOSRV_mtxConnection ] )
QQOut( "Number of connections: " + hb_ntos( Len( netiosrv[ _NETIOSRV_hConnection ] ) ), hb_eol() )
FOR EACH nconn IN netiosrv[ _NETIOSRV_hConnection ]
nFilesCount := 0
nBytesSent := 0
nBytesReceived := 0
aAddressPeer := NIL
nStatus := ;
netio_srvStatus( nconn[ _NETIOSRV_CONN_pConnection ], NETIO_SRVINFO_FILESCOUNT , @nFilesCount )
netio_srvStatus( nconn[ _NETIOSRV_CONN_pConnection ], NETIO_SRVINFO_BYTESSENT , @nBytesSent )
netio_srvStatus( nconn[ _NETIOSRV_CONN_pConnection ], NETIO_SRVINFO_BYTESRECEIVED, @nBytesReceived )
netio_srvStatus( nconn[ _NETIOSRV_CONN_pConnection ], NETIO_SRVINFO_PEERADDRESS , @aAddressPeer )
QQOut( "#" + hb_ntos( nconn:__enumIndex() ) + " " +;
hb_TToC( nconn[ _NETIOSRV_CONN_tStart ] ) + " " +;
Str( netio_srvOpenFilesCount( nconn[ _NETIOSRV_CONN_pConnection ] ) ) + " " +;
AddrToIPPort( nconn[ _NETIOSRV_CONN_aAddrPeer ] ), hb_eol() )
PadR( ConnStatusStr( nStatus ), 12 ) + " " +;
"fcnt: " + Str( nFilesCount ) + " " +;
"send: " + Str( nBytesSent ) + " " +;
"recv: " + Str( nBytesReceived ) + " " +;
AddrToIPPort( aAddressPeer ), hb_eol() )
NEXT
hb_mutexUnlock( netiosrv[ _NETIOSRV_mtxConnection ] )
RETURN
STATIC FUNCTION ConnStatusStr( nStatus )
SWITCH nStatus
CASE NETIO_SRVSTAT_RUNNING ; RETURN "RUNNING"
CASE NETIO_SRVSTAT_WRONGHANDLE ; RETURN "WRONGHANDLE"
CASE NETIO_SRVSTAT_CLOSED ; RETURN "CLOSED"
CASE NETIO_SRVSTAT_STOPPED ; RETURN "STOPPED"
CASE NETIO_SRVSTAT_DATASTREAM ; RETURN "DATASTREAM"
CASE NETIO_SRVSTAT_ITEMSTREAM ; RETURN "ITEMSTREAM"
ENDSWITCH
RETURN "UNKNOWN"
STATIC FUNCTION AddrToIPPort( aAddr )
LOCAL cIP