diff --git a/harbour/ChangeLog b/harbour/ChangeLog index bf0cc58d62..5d80282356 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -16,6 +16,14 @@ The license applies to all entries newer than 2009-04-28. */ +2011-02-07 13:29 UTC-0800 Pritpal Bedi (bedipritpal@hotmail.com) + * contrib/hbnetio/utils/hbnetioq/netiosrq.prg + ! Ebnabled to get information from netiosrv daemon. + Currently only connections info. Time interva to refresh + browser is 10 seconds currently. Still a lot to be + implemented based on latest features of netiosrv daemon. + A work-in-progress. + 2011-02-07 17:39 UTC+0100 Viktor Szakats (harbour.01 syenar.hu) * contrib/hbcurl/hbcurl.hbc * contrib/hbssl/hbssl.hbc diff --git a/harbour/contrib/hbnetio/utils/hbnetioq/netiosrq.prg b/harbour/contrib/hbnetio/utils/hbnetioq/netiosrq.prg index f3ce4a4a15..4917bc1691 100644 --- a/harbour/contrib/hbnetio/utils/hbnetioq/netiosrq.prg +++ b/harbour/contrib/hbnetio/utils/hbnetioq/netiosrq.prg @@ -60,8 +60,6 @@ PROCEDURE Main( ... ) LOCAL nPort := _NETIOMGM_PORT_DEF LOCAL cPassword := "" - readINI( @cIP, @nPort, @cPassword ) - FOR EACH cParam IN { ... } DO CASE CASE Lower( Left( cParam, 6 ) ) == "-addr=" @@ -87,6 +85,8 @@ PROCEDURE Main( ... ) RETURN +/*----------------------------------------------------------------------*/ + PROCEDURE hbnetiocon_IPPortSplit( cAddr, /* @ */ cIP, /* @ */ nPort ) LOCAL tmp @@ -102,6 +102,8 @@ PROCEDURE hbnetiocon_IPPortSplit( cAddr, /* @ */ cIP, /* @ */ nPort ) RETURN +/*----------------------------------------------------------------------*/ + STATIC FUNCTION MyClientInfo() LOCAL hInfo := { => } @@ -116,34 +118,7 @@ STATIC FUNCTION MyClientInfo() RETURN hInfo /*----------------------------------------------------------------------*/ - -STATIC PROCEDURE readINI( /* @ */ cIP, /* @ */ nPort, /* @ */ cPassword ) - LOCAL cBuffer, aTxt, s, n - - cBuffer := hb_memoread( hb_ProgName() + ".config" ) - - IF ! empty( cBuffer ) - aTxt := hb_atokens( strtran( cBuffer, chr( 13 ) ), chr( 10 ) ) - FOR EACH s IN aTxt - s := alltrim( s ) - IF left( lower( s ), 2 ) == "ip" - IF ( n := at( "=", s ) ) > 0 - cIP := alltrim( substr( s, n + 1 ) ) - ENDIF - ELSEIF left( lower( s ), 4 ) == "port" - IF ( n := at( "=", s ) ) > 0 - nPort := hb_ntos( substr( s, n + 1 ) ) - ENDIF - ELSEIF left( lower( s ), 8 ) == "password" - IF ( n := at( "=", s ) ) > 0 - cPassword := alltrim( substr( s, n + 1 ) ) - ENDIF - ENDIF - NEXT - ENDIF - - RETURN - +// NetIOMgmtClient /*----------------------------------------------------------------------*/ CLASS NetIOMgmtClient @@ -158,6 +133,7 @@ CLASS NetIOMgmtClient DATA lSystemTrayAvailable DATA oSysMenu DATA qTimer + DATA qTimerRefresh DATA qLayout DATA qAct1 DATA qAct2 @@ -166,6 +142,7 @@ CLASS NetIOMgmtClient DATA lQuit INIT .f. DATA nCurRec INIT 1 DATA aIPs INIT {} + DATA nRefreshInterval INIT 10000 DATA aData INIT { { NIL, ; // hSock 0 , ; // nSerial .F., ; // lActive @@ -201,6 +178,9 @@ CLASS NetIOMgmtClient METHOD goto( nRec ) METHOD manageIPs() + /* Information retrieval from the daemon */ + METHOD cmdConnInfo( lManagement ) + ENDCLASS /*----------------------------------------------------------------------*/ @@ -338,6 +318,9 @@ METHOD NetIOMgmtClient:execEvent( cEvent, p ) ENDIF ENDIF EXIT + CASE "qTimerRefresh_timeOut" + ::cmdConnInfo( .f. ) + EXIT CASE "qTimer_timeOut" ::oDlg:hide() ::oSys:setToolTip( "Connected to Harbour NetIO Server: " + ::oDlg:title ) @@ -474,6 +457,11 @@ METHOD NetIOMgmtClient:buildBrowser() ::oBrw:oWidget:show() + ::qTimerRefresh := QTimer() + ::qTimerRefresh:setInterval( ::nRefreshInterval ) + ::qTimerRefresh:connect( "timeout()", {|| ::execEvent( "qTimerRefresh_timeOut" ) } ) + ::qTimerRefresh:start() + RETURN Self /*----------------------------------------------------------------------*/ @@ -685,9 +673,7 @@ METHOD NetIOMgmtClient:buildColumns() aadd( aPP, { XBP_PP_COL_DA_ROWWIDTH , 90 } ) // oXbpColumn := XbpColumn():new() - oXbpColumn:dataLink := {|n| iif( empty( ::aData[ ::recNo(), DAT_CONNSOCKET ] ), n := ::aData[ ::recNo(), DAT_BYTESIN ], ; - netio_srvStatus( ::aData[ ::recNo(), DAT_CONNSOCKET ], NETIO_SRVINFO_BYTESRECEIVED, @n ) ), ; - ::aData[ ::recNo(), DAT_BYTESIN ] := n, str( n, 10, 0 ) } + oXbpColumn:dataLink := {|| ::aData[ ::recNo(), DAT_BYTESIN ] } oXbpColumn:create( , , , , aPP ) ::oBrw:addColumn( oXbpColumn ) @@ -704,9 +690,7 @@ METHOD NetIOMgmtClient:buildColumns() aadd( aPP, { XBP_PP_COL_DA_ROWWIDTH , 90 } ) // oXbpColumn := XbpColumn():new() - oXbpColumn:dataLink := {|n| iif( empty( ::aData[ ::recNo(), DAT_CONNSOCKET ] ), n := ::aData[ ::recNo(), DAT_BYTESOUT ], ; - netio_srvStatus( ::aData[ ::recNo(), DAT_CONNSOCKET ], NETIO_SRVINFO_BYTESSENT, @n ) ), ; - ::aData[ ::recNo(), DAT_BYTESOUT ] := n, str( n, 10, 0 ) } + oXbpColumn:dataLink := {|| ::aData[ ::recNo(), DAT_BYTESOUT ] } oXbpColumn:create( , , , , aPP ) ::oBrw:addColumn( oXbpColumn ) @@ -723,8 +707,7 @@ METHOD NetIOMgmtClient:buildColumns() aadd( aPP, { XBP_PP_COL_DA_ROWWIDTH , 60 } ) // oXbpColumn := XbpColumn():new() - oXbpColumn:dataLink := {|n| iif( empty( ::aData[ ::recNo(), DAT_CONNSOCKET ] ), n := 0, ; - netio_srvStatus( ::aData[ ::recNo(), DAT_CONNSOCKET ], NETIO_SRVINFO_FILESCOUNT, @n ) ), str( n, 5, 0 ) } + oXbpColumn:dataLink := {|| ::aData[ ::recNo(), DAT_OPENFILES ] } oXbpColumn:create( , , , , aPP ) ::oBrw:addColumn( oXbpColumn ) @@ -791,6 +774,41 @@ METHOD NetIOMgmtClient:buildSystemTray() /*----------------------------------------------------------------------*/ +METHOD NetIOMgmtClient:cmdConnInfo( lManagement ) + LOCAL aArray + LOCAL hConn + LOCAL aData + LOCAL d_ + + IF Empty( ::pConnection ) + MsgBox( "Not Connected" ) + ELSE + aArray := netio_funcexec( ::pConnection, iif( lManagement, "hbnetiomgm_adminfo", "hbnetiomgm_conninfo" ) ) + IF ! empty( aArray ) + aData := {} + FOR EACH hConn IN aArray + d_:= array( 10 ) + d_[ DAT_CONNSOCKET ] := NIL + d_[ DAT_SERIAL ] := hConn[ "nThreadID" ] + d_[ DAT_ACTIVATED ] := .t. + d_[ DAT_IP ] := hConn[ "cAddressPeer" ] + d_[ DAT_PORT ] := 0 + d_[ DAT_TIMEIN ] := hb_TToC( hConn[ "tStart" ], "YYYY.MM.DD", "HH:MM:SS" ) + d_[ DAT_TIMEOUT ] := space( 17 ) + d_[ DAT_BYTESIN ] := hConn[ "nBytesReceived" ] + d_[ DAT_BYTESOUT ] := hConn[ "nBytesSent" ] + d_[ DAT_OPENFILES ] := hConn[ "nFilesCount" ] + aadd( aData, d_ ) + NEXT + ::aData := aData + ::refresh() + ENDIF + ENDIF + + RETURN NIL + +/*----------------------------------------------------------------------*/ + STATIC FUNCTION AppSys() RETURN NIL