Lucent's OMC-2000 |
The OMC 2000 Homepage - DnD Bray |
S3 |
FEATURE OMC-FM-177 OMC-NFM PHASE 2 (NOC1) ~gcomanda
NOC1 Phase 2 ~mmusgrav
~mmusgrav/NOC1/
~mmusgrav/NOC1/DOCS/
~mmusgrav/NOC1/SOCKETS/my_sock/
~mmusgrav/rje/NFM/
~mmusgrav/jag4.8a/src/jag/[install][config][include][src][libsrc][...]/afd/[ascOutput][ascIntf]/
~jamesc/noc1/
Main files:
/opt/pca/jag/jag4.8a/ofc/src/jag/libsrc/afd/[ascIntf][ascOutput]
/opt/pca/jag/jag4.8a/night/src/jag/libsrc/afd/[ascIntf][ascOutput]
/opt/pca/jag/jag4.8a/night/src/jag/src/[ascIntf][ascOutput]
/opt/pca/jag/jag4.8a/NFM_WORKING/src/jag/libsrc/[ascIntf][ascOutput]
/opt/pca/jag/jag4.8a/NFM_BACKUP/src/jag/libsrc/[ascIntf][ascOutput]
/opt/pca/jag/jag4.8a/ofc/src/jag/src/[ascIntf][ascOutput]/
Tue 4 May: cd /users/jamesc/jag4.8a/src/jag/ cp -R /users/mmusgrav/jag4.8a/src/jag/libsrc/afd/* ./libsrc/afd cp -R /users/mmusgrav/jag4.8a/src/jag/src/ascIntf/* ./src/ascIntf cp -R /users/mmusgrav/jag4.8a/src/jag/src/ascOutput/* ./src/ascOutput cp -R /users/mmusgrav/jag4.8a/src/jag/libsrc/util/* ./libsrc/util cd /users/jamesc/jag4.8a/src/jag/ cp -R /users/mmusgrav/jag4.8a/src/jag/libsrc/afd/ascOutput/*.C ./libsrc/afd/ascOutput cp -R /users/mmusgrav/jag4.8a/src/jag/libsrc/afd/ascOutput/*.h ./libsrc/afd/ascOutput cp -R /users/mmusgrav/jag4.8a/src/jag/libsrc/afd/ascIntf/*.C ./libsrc/afd/ascIntf cp -R /users/mmusgrav/jag4.8a/src/jag/libsrc/afd/ascIntf/*.h ./libsrc/afd/ascIntf cp -R /users/mmusgrav/jag4.8a/src/jag/libsrc/afd/mib/*.C ./libsrc/afd/mib cp -R /users/mmusgrav/jag4.8a/src/jag/libsrc/afd/mib/*.h ./libsrc/afd/mib cp -R /users/mmusgrav/jag4.8a/src/jag/src/ascIntf/*.C ./src/ascIntf cp -R /users/mmusgrav/jag4.8a/src/jag/src/ascIntf/*.h ./src/ascIntf cp -R /users/mmusgrav/jag4.8a/src/jag/src/ascOutput/*.C ./src/ascOutput cp -R /users/mmusgrav/jag4.8a/src/jag/src/ascOutput/*.h ./src/ascOutput cp -R /users/mmusgrav/jag4.8a/src/jag/libsrc/util/*.C ./libsrc/util cp -R /users/mmusgrav/jag4.8a/src/jag/libsrc/util/*.h ./libsrc/util bldscript includes cp ~/jag4.8a/src/jag/libsrc/afd/ascIntf/*.h /lbuild/jamesc/jag4.8a/prod/jag/include/ cp ~/jag4.8a/src/jag/libsrc/afd/ascOutput/*.h /lbuild/jamesc/jag4.8a/prod/jag/include/ cp ~/jag4.8a/src/jag/src/ascIntf/*.h /lbuild/jamesc/jag4.8a/prod/jag/include/ cp ~/jag4.8a/src/jag/src/ascOutput/*.h /lbuild/jamesc/jag4.8a/prod/jag/include/ cp ~/jag4.8a/src/jag/libsrc/util/*.h /lbuild/jamesc/jag4.8a/prod/jag/include bldscript ascOutput cd /users/jamesc/jag4.8a/src/jag/libsrc/afd/ascOutput bldscript install ls -al /lbuild/jamesc/jag4.8a/prod/jag/libsrc/afd/ascOutput/*.o cd /users/jamesc/jag4.8a/src/jag/src/ascOutput bldscript install ls -al /lbuild/jamesc/jag4.8a/prod/jag/install/bin cd /users/jamesc/jag4.8a/src/jag/libsrc/afd/ascOutput bldscript NFMOutput.o cd /lbuild/jamesc/jag4.8a/prod/jag/lib ar -r libascOutput.a ../libsrc/afd/ascOutput/*.o bldscript ascIntf cd /users/jamesc/jag4.8a/src/jag/libsrc/afd/ascIntf bldscript install ls -al /lbuild/jamesc/jag4.8a/prod/jag/libsrc/afd/ascIntf/*.o ls -al /lbuild/jamesc/jag4.8a/prod/jag/lib/*.a cd /users/jamesc/jag4.8a/src/jag/src/ascIntf bldscript install ls -al /lbuild/jamesc/jag4.8a/prod/jag/install/bin Purify build . ~jamesc/bin/purify cd /users/jamesc/jag4.8a/src/jag/libsrc/afd/ascOutput bldscript install instrument=$PURIFY cd /users/jamesc/jag4.8a/src/jag/src/ascOutput bldscript install instrument=$PURIFY ls -al /lbuild/jamesc/jag4.8a/prod/jag/install/bin NUTS! we seem to be having problems. Purify engine: While processing file /opt/osp/osp5.0.3/osp/5.0.3/hpux1020/lib/libMo.sl: Error: Memory allocation failed during a request for 556276 bytes. This failure can be caused by exceeding the data segment size limit or by exhausting the available swap space. Space left in the data segment is 155553792 bytes. Data segment size limit is 251658240 bytes. System error code: Not enough space make: *** exit code 1 making ascOutput ignored Sablime help, hz vol & faq. . sablime jag4.8a cd /users/jamesc/jag4.8a/src/jag/libsrc/afd/ascOutput edget mr=omc990206 srf=BaseOutput.C dir=. g=jag4.8a prompt=n ?? ssql mr g mrgstat from MG where dev.eq.jamesc ssql mr g mrgstat from MG where dev.eq.mmusgrav ssql mr g sfile dir from MD where dev.eq.mmusgrav and mdstat.eq.nodelta and g.eq."jag4.5" ssql all from GS where sfile.eq.ascOutputMain.C ssql sfile from GS where "dir.eq.jag/src/ascOutput" ssql sfile from GS where dir.eq.jag/libsrc/afd/ascOutput ssql dir sfile from GS where dir.lk.jag/libsrc/afd /lbuild/jamesc/jag4.8a/prod/jag/install/bin /lbuild/mmusgrav/jag4.8a/prod/jag/install/bin /lbuild/jamesc/jag4.8a/prod/jag/libsrc/afd /lbuild/jamesc/jag4.8a/prod/jag/lib /lbuild/jamesc/jag4.8a/prod/jag/libsrc/afd/ascOutput /lbuild/jamesc/jag4.8a/prod/jag/libsrc/afd/ascIntf /opt/projects/jaguar/NEWCOMMONENV/bin/runascintf /opt/projects/jaguar/NEWCOMMONENV/bin/runascoutput runomcall4.8 # wait a while & kill gui runascintf jamesc runascoutput jamesc rungui donal ~jamesc/jag4.8a/config/admin/system.cf use "OUTPUT_TEMPLATE_DIR" "/users/mmusgrav/bin/TEMPLATES "ALARMFWDDIR" "/users/mmusgrav/noc1 "AFD_MOSU_CHANGES" 0 /lbuild/dshanahan/jag4.8a/prod rcp -r ./* jamesc@bryhp681:/lbuild/jamesc/jag4.8a/prod or rather tar -xvf and cvf isql -Ujamesc3 -Pjamesc3 isql -Ummusgrav3 -Pmmusgrav3 select name,code from classTable where name like "al%" select * from internalEFDtable0 select * from afdInterfacetable0 select * from neConnectiontable0 select * from alarmRecordtable0 ;; repl-regexp ;;"\([A-Za-z0-9\/:]+\)[ \t]*" "\1, " ;;tidy whitespace with "[ ]+" " " delete from neConnectiontable0 insert into neConnectiontable0 (oidclass, oidinstLeft, oidinstRite, oidtomid, networkElementOidclass, networkElementOidinstLeft, networkElementOidinstRite, networkElementOidtomid, networkElementOidname, bssConnectionOidclass, bssConnectionOidinstLeft, bssConnectionOidinstRite, bssConnectionOidtomid, name, nameBindingclass, nameBindinginstLeft, nameBindinginstRite, nameBindingtomid, criticalCount, majorCount, minorCount, alarmOutstandingCount, unAckCount, specAvailStatus, reflectedAlarmStatus, underRepairRefAlCount, criticalRefAlCount, majorRefAlCount, minorRefAlCount, alarmOutstandingRefAlCount, upwardReflection, opState, adminState, usageState, alarmStatus, procStatus, availStatus, cntlStatus, standByStatus, unknownStatus, containerOidclass, containerOidinstLeft, containerOidinstRite, containerOidtomid ) values ( 16916, 3343351, 926340985, 51, 17408, 3343353, 926340985, 51, "BSS:0", 19969, 3473408, 926341742, 53, "NECONN:0", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 16896, 1, 0, 51 ) delete from neConnectiontable0 insert into neConnectiontable0 (oidclass, oidinstLeft, oidinstRite, oidtomid, networkElementOidclass, networkElementOidinstLeft, networkElementOidinstRite, networkElementOidtomid, networkElementOidname, bssConnectionOidclass, bssConnectionOidinstLeft, bssConnectionOidinstRite, bssConnectionOidtomid, name, nameBindingclass, nameBindinginstLeft, nameBindinginstRite, nameBindingtomid, criticalCount, majorCount, minorCount, alarmOutstandingCount, unAckCount, specAvailStatus, reflectedAlarmStatus, underRepairRefAlCount, criticalRefAlCount, majorRefAlCount, minorRefAlCount, alarmOutstandingRefAlCount, upwardReflection, opState, adminState, usageState, alarmStatus, procStatus, availStatus, cntlStatus, standByStatus, unknownStatus, containerOidclass, containerOidinstLeft, containerOidinstRite, containerOidtomid ) values ( 16916, 3343351, 926340985, 51, 17408, 3343353, 926340985, 51, "BSS:0", 19969, 3473408, 926341742, 53, "NECONN:0", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 16896, 1, 0, 51 ) insert into internalEFDtable0 (oidclass, oidinstLeft, oidinstRite, oidtomid, discriminatorId, holdTime, startTime, stopTime, eventTypeBits, perceivedSeverityBits, alarmStateBits, destinationType, destination, name, nameBindingclass, nameBindinginstLeft, nameBindinginstRite, nameBindingtomid, criticalCount, majorCount, minorCount, alarmOutstandingCount, unAckCount, specAvailStatus, reflectedAlarmStatus, underRepairRefAlCount, criticalRefAlCount, majorRefAlCount, minorRefAlCount, alarmOutstandingRefAlCount, upwardReflection, opState, adminState, usageState, alarmStatus, procStatus, availStatus, cntlStatus, standByStatus, unknownStatus, containerOidclass, containerOidinstLeft, containerOidinstRite, containerOidtomid, userLabel) values (20992, 3604480, 926510369, 55, 808, 0, "May 12 1999 12:59PM", NULL, 496, 31, 11, 7, "135.86.129.52", "AFD:808", 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, "NFM_AFD" ) ypcat hosts |grep bryhp668 135.86.129.97 bryhp668 ypcat hosts |grep bryhp681 135.86.129.52 bryhp681 netstat NFMSrv --- nothing NFMSim --- tcp 0 0 bryhp681.6543 bryhp681.1641 ESTABLISHED tcp 0 0 bryhp681.1641 bryhp681.6543 ESTABLISHED ctrlCNFMSrv $ netstat |grep 6543 tcp 0 0 bryhp681.6543 bryhp681.1641 FIN_WAIT_2 tcp 0 0 bryhp681.1641 bryhp681.6543 CLOSE_WAIT quit NFMSim $ netstat |grep 6543 tcp 0 0 bryhp681.6543 bryhp681.1641 TIME_WAIT run NFMSim, connection fails ... but exits TIME_WAIT ... or timeouts? quit NFMSim 1st, then NFMSrv and all is fine.
Handy UNIX/C/C++/OSP/... references
Mail Thread Index
cleaning up TIME_WAIT states
http://www.sunsite.auc.dk/RFC/rfc/
RFC HyperText Archive
search RFCs for TIME_WAIT
RFC 1337 - TIME-WAIT Assassination Hazards in TCP
RFC 1122 - Requirements for Internet Hosts -- Communication Layers
RFC 793 - Transmission Control Protocol
RFC 1323 - TCP Extensions for High Performance
RFC 916 - RELIABLE ASYNCHRONOUS TRANSFER PROTOCOL (RATP)
RFC 1339 - Remote Mail Checking Protocol
stuck in TIME_WAIT, winsock mailing list
Try setting SO_REUSEADR before closing the socket.
setting SO_REUSEADDR, SO_REUSEPORT and SO_LINGER
When this is done in the server NFMSrv ... i.e. in the OMC code? The sockets don't linger in time_wait after client shutdown. NFMSim sockets are not the problem => setting them there won't help. NFMSim ascOutput -------------------------------------- socket socket set REUSEADDR/PORT LINGER bind(6543) connect------->accept recv <-------send .. .. shutdown shutdown, TIME_WAIT exits because of REUSE* and LINGER NFMSim shutdown before ascOutput => no problems, no TIME_WAIT ascOutput shutdown first => TIME_WAIT without LINGER int nAllowReuse = 1; if (setsockopt(nfmSocketFd, SOL_SOCKET, SO_REUSEADDR, (char*)&nAllowReuse, sizeof(nAllowReuse)) <0 ) { cerr << "NFMSim:setHost:ERROR: could not set socket to reuse addr." << endl; } if (setsockopt(nfmSocketFd, SOL_SOCKET, SO_REUSEPORT, (char*)&nAllowReuse, sizeof(nAllowReuse)) <0 ) { cerr << "NFMSim:setHost:ERROR: could not set socket to reuse port." << endl; } linger lingerSet; lingerSet.l_onoff = 0; lingerSet.l_linger = 0; // set server to allow reuse of socket port if (setsockopt(nfmSocketFd, SOL_SOCKET, SO_LINGER, (char*)&lingerSet, sizeof(lingerSet)) <0 ) { cerr << "NFMSim:setHost:ERROR: could not set socket to linger." << endl; }
Test scope - requirements - complete code coverage process startup, reading from MIB, ascIntf-ascOutput communication Test process startup with NFM AFD in mib NFM AFD creation create NFM AFD create NFM AFD with different time/weekmasks & test ... create 2nd NFM AFD (rejected) create NFM AFD (with wrong/missing NFM address/port?) create NFM AFD and connect (not from NFM => connection rejected) create NFM AFD after 2 errors above, check socket connection works modify other AFD to be NFM AFD delete NFM AFD & recreate. locking & unlocking of NFM AFD lock NFM AFD check new alarms unlock NFM AFD (check with new alarms) unlock NFM AFD after NFM_INIT_TIMER expires create locked NFM AFD, unlock. init/update testing NFM AFD creation triggers init seq, check alarms b4 and after NFM_INIT_TIMER NFM AFD unlock triggers update or init Test alarms arriving during init/update >;) NFM AFD creation without any alarms NFM AFD creation with alarms in database before NFM_INIT_TIMER (old), after NFM_INIT_TIMER (recent) and with date>now. NFM AFD creation with varied NFM_INIT_TIMER from 0 to 24 hours and above (not valid). Test batched alarms with varied batch size Heartbeat testing GUI comms ascOut-ascIntf specific comms OMC-NFM connection testing - NFM goes down - OMC goes back to listen/accept NFM comes up - OMC accepts connection - init/update and normal op. lost ntf sent to mib only when NFM-OMC connection down Unit test mosu vs file mess. Check destDownTime, nfmState, previousDestDownTime Note these can be in MOSU (for 4.9 or in persistent file for 4.8a) used in updateOrInitialisation, set in NFMOutput constructor, ....where else? FILE: NFMOutput::readNfmOperationState NFMOutput::setNfmOperationState NFMOutput::deleteNfmOperationStateFile NFMOutput::readPreviousDestDownTime NFMOutput::setPreviousDestDownTime NFMOutput::deleteNfmPreviousDestDownTimeFile unit test for each new method and methods majorly modified? complete coverage ... error case checking ... Hmmm Hmm.
omc-177-10A new 'NFM' option shall be added to the AFD attribute 'Destination Type'. It shall be given an Enum value of '7'. 4.1.1
omc-177-30A new timer, AFD_NFM_INIT_TIMER shall be added to the system.cf file.This shall have values of 1-24 hours, with a step size of 1. This parameter shall be user modifiable. See OA&M section of the HLD. 4.4.1
omc-177-40The choke mechanism defined in the omc-fm-138 impact statement (Ref. 7.5), shall not be applied to the AFD configured for the NFM interface. This requirement is currently imple-mented for specific destinations only and will not affect new code or require modifications to existing code for this feature.
omc-177-50There may only be one AFD created with a destina-tion type of NFM, regardless of the state of this AFD. Any attempt to create a second AFD with a destination type of NFM will be rejected and a suit-able error message will be displayed. The mib will be responsible for returning this error code to the GUI. 4.12.1 See the GUI section of the HLD also.
omc-177-60During an Initialisation or Update, any attempt by the operator to modify the AFD will be rejected. A suitable error message will be presented to the operator when he attempts to initiate the modifica-tion by clicking on the 'Ok' button. The mib will be responsible for returning this error code to the GUI. 4.12.2 See the GUI section of the HLD also.
omc-177-100The AFD Create/Modify screen shall present a new destination option 'NFM' in the form of an additional option. See the GUI section of the HLD.
omc-177-110When a Destination Type of 'NFM' is selected as the AFD destination, the destination field will be datafilled with the IP address as read from a pre-populated configuration file (Ref. omc-177-400). The destination field itself shall not be modifiable by the operator. See the GUI section of the HLD. omc-177-120When the user selects NFM as the Destination Type, the hold timer will default to 'Not Active' instead of its usual '5 mins'. The operator will have the option to modify this if desired. See GUI section of the HLD. 4.9.3
omc-177-140The AFD detail screen shall display the new NFM destination type and its associated IP address as the destination. See the GUI section of the HLD.
omc-177-150The AFD browser window shall display the new destination type of 'NFM' when appropriate, and its associated destination field. See the GUI section of the HLD.
omc-177-160During an Initialisation or Update, the status bar of AFD Detailed View Window, where destination type is NFM, shall display the following messages: - NFM Initialisation in progress or - NFM Update in progress. The "in progress" messages shall remain for the duration of the Update/Initialisation, unless subse-quently overwritten. See the GUI section of the HLD.
omc-177-210The OMC shall provide the mechanism for the establishment of a socket connection over a TCP/ IP interface, to the NFM equipment. 4.3 , 4.6.3
omc-177-220Once the physical interface is established, the OMC shall 'listen' for a 'connection request' mes-sage from the NFM and establish a connection accordingly. This will only be done when the AFD is in an unlocked state. If the AFD is Locked, then no response to the 'connection request' will be offered. 4.3 ,4.6.3 , 4.7 , 4.10.1
omc-177-225The OMC must identify the connection request as originating from the NFM. This could be done by using the NFM IP address from the configuration file (omc-177-400). If the NFM cannot be positively identified, the request will be ignored. 4.3 , 4.6.3
omc-177-227When the AFD is locked whilst the OMC-NFM inter-face is in normal operation, the OMC shall cease all transmission to the NFM. The TCP connection shall not be broken. Once the AFD is unlocked, the OMC will resume transmission according to omc-177-230 4.10.1
omc-177-230The OMC must be capable of detecting a loss of connection. Once a break in the connection is detected, the OMC must be capable of measuring the amount of time which elapses until the connec-tion is re-established. 4.3 , 6 omc-177-235When the OMC detects that the link is down, it will set the operational state of the AFD to 'disabled' and will raise an alarm against the AFD. 4.3 , 4.10.1 , 6
omc-177-240The OMC shall support the transmission of heart- beat messages every 10 minutes. 4.10 omc-177-250The OMC shall initiate an initialisation procedure under the following situations: i) A connection has been established between the OMC and the NFM for the first time. ii) The OMC to NFM connection has been re-estab- lished where the downtime has been greater than or equal to AFD_NFM_INIT_TIMER (Ref. omc-177-30) 4.4.1 , 4.6.3
omc-177-255If the connection is lost during an initialisation, where the connection is re-established, the OMC shall again perform an initialisation regardless of the amount of time the connection has been down. 4.4.1 , 4.6.3 Requirement # Description Subsystem Design Section
omc-177-260When performing an initialisation, the alarms for-warded by the OMC will be those that: i) Match the 'Severity', 'Event Type', 'Managed Object', and 'MMN Number' filter criteria defined in the AFD. ii) Are currently in the open state (this condition overrides the 'Alarm State' filter settings). 4.4.2 , 4.6.3
omc-177-270The OMC shall support the transmission of Initiali-sation Start and Initialisation Stop notifications as part of the Initialisation procedure. 4.1.2.2 , 4.4.2 , 4.6.3
omc-177-280The OMC shall initiate an Update procedure when an OMC to NFM connection is re- established after a downtime of less than AFD_NFM_INIT_TIMER (omc-177-30). 4.4.1 , 4.6.3
omc-177-285If, during an Update, the connection is lost, the OMC shall consider that the connection was never re-established and shall continue to measure the downtime from the original loss of connection and shall not re-start the downtime measurement. 4.4.1 , 4.6.3
omc-177-290When performing an Update, the alarms forwarded to the OMC will be those that match the 'Severity', 'Alarm State', 'Managed Object', and 'MMN Num-ber' filter criteria defined in the AFD. 4.4.2 , 4.6.3
omc-177-300The OMC shall support the transmission of Update Start and Update Stop notifications as part of the Update procedure. 4.1.2.2 , 4.4.2 , 4.6.3
omc-177-310During an initialisation or update phase, the OMC may group multiple alarm reports in a single Alarm Notification. To facilitate this, the OMC shall sup-port the OPEN and CLEARED alarm message for-mats given in Table 4.3-1: Notification Formats, FP/ DR (Ref. 11.10 ) 4.6.3
omc-177-320Any alarms received at the OMC whilst an initialisa- tion or update is taking place, that match the filter-ing criteria for the AFD to NFM, shall be stored and subsequently sent in sequence once the OMC and NFM have been synchronized. 4.4.2 ,4.6.3
omc-177-400A script shall be provided to update the IP address and port number in the HPUX release, for the con- figuration file during installation. The IP address and port number information shall be made public. The OMC shall use this information for the setup of the new NFM interface. The exact nature and loca-tion of the configuration file is to be determined. This document places no conditions or require-ments in this respect. See OA&M section of the HLD. 4.3 , 4.6.3
omc-177-410No special permissions are required for the opera- tor to use this feature. Normal FM permissions will suffice. This requirement does not require any new code or modifications to existing code. Requirement # Description Subsystem Design Section
omc-177-430A simulator will be required for the testing of the NFM interface. The simulator must be capable of: => Supporting TCP/IP connection => sending a 'Connection Request' message to the OMC. => Receiving and breaking down the notifications sent from the OMC. => Displaying the ASCII test on screen and redi-recting it to a log file.
InternalEFDCopy::update AsciiFormatter::writeReport AscFilterList::remove_afd BaseOutput::registerSieve BaseOutput::HandleRegisterResult BaseOutput::getDestTypeStr BaseOutput::SetupTemplates BaseOutput::processOutputAlarmEvent BaseOutput::ProcessEvent BaseOutput::GetEFDForDestination OutputList::loadDestinations OutputList::addOutput SocketOutput::SocketOutput SocketOutput::~SocketOutput SocketOutput::writeStr SocketListenEvent::SocketListenEvent SocketListenEvent::DoXdr NFMOutput::NFMOutput NFMOutput::~NFMOutput NFMOutput::openOutput NFMOutput::closeOutput NFMOutput::createAndSendInitialisationOrUpdateNotif NFMOutput::updateOrInitialisation NFMOutput::getEFDAdmStateForNFMDestination NFMOutput::initialisationSequence NFMOutput::updateSequence NFMOutput::beginSequence NFMOutput::findAlarms NFMOutput::getEFDAdmStateForNFMDestination NFMOutput::getEFDOidForNFMDestination NFMOutput::readNfmOperationState NFMOutput::setNfmOperationState NFMOutput::deleteNfmOperationStateFile NFMOutput::readPreviousDestDownTime NFMOutput::setPreviousDestDownTime NFMOutput::deleteNfmPreviousDestDownTimeFile NFMOutput::findNFMInternalEFDCopy(); NFMOutput::createNFMInternalEFDCopyInstance NFMOutput::handleErrorTask NFMOutput::handleError listenSensor::listenSensor listenSensor::SubjectChanged listenSensor::validateConnection queueAndProcessAlarmsTask::queueAndProcessAlarmsTask queueAndProcessAlarmsTask::insert queueAndProcessAlarmsTask::remove queueAndProcessAlarmsTask::processQueue getAndProcessNewAlarmsTask::getAndProcessNewAlarmsTask heartbeatSensor::heartbeatSensor heartbeatSensor::SubjectChanged updateOrInitialisationTask::updateOrInitialisationTask NFMSim unit test!?