public ControlNotFlushed stampNotFlushed ( ControlNotFlushed msg , SIBUuid12 streamID ) throws SIResourceException { if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isEntryEnabled ( ) ) SibTr . entry ( tc , "stampNotFlushed" , new Object [ ] { msg } ) ; int count = 0 ; //the maximum possible number of streams in a set int max = ( SIMPConstants . MSG_HIGH_PRIORITY + 1 ) * ( Reliability . MAX_INDEX + 1 ) ; //an array of priorities int [ ] ps = new int [ max ] ; //an array of reliabilities int [ ] qs = new int [ max ] ; //an array of prefixes long [ ] cs = new long [ max ] ; StreamSet streamSet = getStreamSet ( streamID , false ) ; //iterate through the non-null streams Iterator itr = streamSet . iterator ( ) ; while ( itr . hasNext ( ) ) { InternalOutputStream oStream = ( InternalOutputStream ) itr . next ( ) ; // for each stream, store it's priority, reliability and completed prefix ps [ count ] = oStream . getPriority ( ) ; qs [ count ] = oStream . getReliability ( ) . toInt ( ) ; cs [ count ] = oStream . getCompletedPrefix ( ) ; count ++ ; } //create some arrays which are of the correct size int [ ] realps = new int [ count ] ; int [ ] realqs = new int [ count ] ; long [ ] realcs = new long [ count ] ; //copy the data in to them System . arraycopy ( ps , 0 , realps , 0 , count ) ; System . arraycopy ( qs , 0 , realqs , 0 , count ) ; System . arraycopy ( cs , 0 , realcs , 0 , count ) ; //set the appropriate message fields msg . setCompletedPrefixPriority ( realps ) ; msg . setCompletedPrefixQOS ( realqs ) ; msg . setCompletedPrefixTicks ( realcs ) ; msg . setDuplicatePrefixPriority ( realps ) ; msg . setDuplicatePrefixQOS ( realqs ) ; msg . setDuplicatePrefixTicks ( realcs ) ; if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isEntryEnabled ( ) ) SibTr . exit ( tc , "stampNotFlushed" , msg ) ; //return the message return msg ; }
Attach the appropriate completed and duplicate prefixes for the stream stored in this array to a ControlNotFlushed message .