From dcdd9c224723e93899e37f622786d06d61392b54 Mon Sep 17 00:00:00 2001 From: Jeff Hill Date: Fri, 9 Aug 2002 16:53:08 +0000 Subject: [PATCH] new command line, better formatting --- src/ca/casw.cpp | 56 +++++++++++++++++++++++++++++++++++++------------ 1 file changed, 43 insertions(+), 13 deletions(-) diff --git a/src/ca/casw.cpp b/src/ca/casw.cpp index 7c3db01a5..60ba22b93 100644 --- a/src/ca/casw.cpp +++ b/src/ca/casw.cpp @@ -31,9 +31,11 @@ #include "udpiiu.h" #include "inetAddrID.h" -int main ( int, char ** ) +int main ( int argc, char ** argv ) { epicsTime programBeginTime = epicsTime::getCurrent (); + bool validCommandLine = false; + unsigned interest = 0u; SOCKET sock; osiSockAddr addr; osiSocklen_t addrSize; @@ -44,6 +46,29 @@ int main ( int, char ** ) ca_uint16_t repeaterPort; int status; + if ( argc == 1 ) { + validCommandLine = true; + } + else if ( argc == 2 ) { + status = sscanf ( argv[1], " -i%u ", & interest ); + if ( status == 1 ) { + validCommandLine = true; + } + } + else if ( argc == 3 ) { + if ( strcmp ( argv[1], "-i" ) == 0 ) { + status = sscanf ( argv[2], " %u ", & interest ); + if ( status == 1 ) { + validCommandLine = true; + } + } + } + + if ( ! validCommandLine ) { + printf ( "usage: \"%s <-i interestLevel>\"", argv[0] ); + return 0; + } + serverPort = envGetInetPortConfigParam ( &EPICS_CA_SERVER_PORT, static_cast (CA_SERVER_PORT) ); @@ -173,7 +198,6 @@ int main ( int, char ** ) unsigned beaconNumber = ntohl ( pCurMsg->m_cid ); unsigned protocolRevision = ntohs ( pCurMsg->m_dataType ); - bool netChange; epicsTime currentTime = epicsTime::getCurrent(); /* @@ -181,7 +205,22 @@ int main ( int, char ** ) */ bhe *pBHE = beaconTable.lookup ( ina ); if ( pBHE ) { - netChange = pBHE->updatePeriod ( programBeginTime, currentTime, beaconNumber, protocolRevision ); + epicsTime previousTime = pBHE->updateTime (); + bool anomaly = pBHE->updatePeriod ( programBeginTime, + currentTime, beaconNumber, protocolRevision ); + if ( anomaly ) { + char date[64]; + currentTime.strftime ( date, sizeof ( date ), + "%a %b %d %Y %H:%M:%S.%f"); + char host[64]; + ipAddrToA ( &ina, host, sizeof ( host ) ); + printf ( "%-40s %s\n", + host, date ); + if ( interest > 0 ) { + printf ( "\testimate=%f current=%f\n", + pBHE->period (), currentTime - previousTime ); + } + } } else { /* @@ -191,22 +230,13 @@ int main ( int, char ** ) * time that we have seen a server's beacon * shortly after the program started up) */ - netChange = false; - pBHE = new bhe ( currentTime, ina ); + pBHE = new bhe ( currentTime, beaconNumber, ina ); if ( pBHE ) { if ( beaconTable.add ( *pBHE ) < 0 ) { pBHE->destroy (); } } } - - if ( netChange ) { - char date[64]; - currentTime.strftime ( date, sizeof ( date ), "%a %b %d %Y %H:%M:%S"); - char host[64]; - ipAddrToA ( &ina, host, sizeof ( host ) ); - errlogPrintf ("CA server beacon anomaly: %s %s\n", date, host ); - } } pCurBuf += msgSize; pCurMsg = reinterpret_cast < const caHdr * > ( pCurBuf );