static void rcvDeleteTempDestination(CommsByteBuffer request, Conversation conversation,
                                        int requestNumber, boolean allocatedFromBufferPool,
                                        boolean partOfExchange)
   {
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) SibTr.entry(tc, "rcvDeleteTempDestination",
                                           new Object[]
                                           {
                                              request,
                                              conversation,
                                              ""+requestNumber,
                                              ""+allocatedFromBufferPool,
                                              ""+partOfExchange
                                            });

      ConversationState convState = (ConversationState) conversation.getAttachment();

      short connectionObjectID = request.getShort(); // BIT16 ConnectionObjectId
      if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) SibTr.debug(tc, "SICoreConnection Id:", ""+connectionObjectID);

      SICoreConnection connection =
         ((CATConnection) convState.getObject(connectionObjectID)).getSICoreConnection();

      try
      {
         /**************************************************************/
         /* Destination address                                        */
         /**************************************************************/
         SIDestinationAddress destAddress = request.getSIDestinationAddress(conversation.getHandshakeProperties().getFapLevel());

         // Have a quick check of the cached destination that is being held open for connection
         // receives. If the destinations match, we must close that consumer before deleting
         // the temporary destination
         CATMainConsumer cacheConsumer = convState.getCachedConsumer();
         if (cacheConsumer != null)
         {
            ConsumerSession cacheSession = cacheConsumer.getConsumerSession();

            if (cacheSession != null)
            {
               if (cacheSession.getDestinationAddress().equals(destAddress))
               {
                  if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) SibTr.debug(tc, "The destination is currently held open by us");

                  try
                  {
                     cacheSession.close();

                     // Ensure we try and recreate the consumer next time
                     convState.setCachedConsumer(null);
                  }
                  catch (SIException e)
                  {
                     // No FFDC code needed
                     if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) SibTr.debug(tc, "Unable to close cached consumer", e);
                  }
               }
            }
         }

         // Remove the destination
         connection.deleteTemporaryDestination(destAddress);

         try
         {
            // Inform the client
            conversation.send(poolManager.allocate(),
                              JFapChannelConstants.SEG_DELETE_TEMP_DESTINATION_R,
                              requestNumber,
                              JFapChannelConstants.PRIORITY_MEDIUM,
                              true,
                              ThrottlingPolicy.BLOCK_THREAD,
                              null);
         }
         catch (SIException e)
         {
            FFDCFilter.processException(e,
                                        CLASS_NAME + ".rcvDeleteTempDestination",
                                        CommsConstants.STATICCATDESTINATION_DESTDELETE_01);

            if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) SibTr.debug(tc, e.getMessage(), e);

            SibTr.error(tc, "COMMUNICATION_ERROR_SICO2022", e);
         }
      }
      catch (SINotAuthorizedException e)
      {
         // No FFDC Code Needed
         if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) SibTr.debug(tc, e.getMessage(), e);

         StaticCATHelper.sendExceptionToClient(e,
                                               null,
                                               conversation, requestNumber);
      }
      catch (SIException e)
      {
         //No FFDC code needed
         //Only FFDC if we haven't received a meTerminated event.
         if(!convState.hasMETerminated())
         {
            FFDCFilter.processException(e,
                                        CLASS_NAME + ".rcvDeleteTempDestination",
                                        CommsConstants.STATICCATDESTINATION_DESTDELETE_02);
         }

         if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) SibTr.debug(tc, e.getMessage(), e);

         StaticCATHelper.sendExceptionToClient(e,
                                               CommsConstants.STATICCATDESTINATION_DESTDELETE_02,
                                               conversation, requestNumber);
      }

      request.release(allocatedFromBufferPool);

      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) SibTr.exit(tc, "rcvDeleteTempDestination");
   }
static void rcvDeleteTempDestination ( CommsByteBuffer request , Conversation conversation , int requestNumber , boolean allocatedFromBufferPool , boolean partOfExchange ) { if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isEntryEnabled ( ) ) SibTr . entry ( tc , "rcvDeleteTempDestination" , new Object [ ] { request , conversation , "" + requestNumber , "" + allocatedFromBufferPool , "" + partOfExchange } ) ; ConversationState convState = ( ConversationState ) conversation . getAttachment ( ) ; short connectionObjectID = request . getShort ( ) ; if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isDebugEnabled ( ) ) SibTr . debug ( tc , "SICoreConnection Id:" , "" + connectionObjectID ) ; SICoreConnection connection = ( ( CATConnection ) convState . getObject ( connectionObjectID ) ) . getSICoreConnection ( ) ; try { SIDestinationAddress destAddress = request . getSIDestinationAddress ( conversation . getHandshakeProperties ( ) . getFapLevel ( ) ) ; CATMainConsumer cacheConsumer = convState . getCachedConsumer ( ) ; if ( cacheConsumer != null ) { ConsumerSession cacheSession = cacheConsumer . getConsumerSession ( ) ; if ( cacheSession != null ) { if ( cacheSession . getDestinationAddress ( ) . equals ( destAddress ) ) { if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isDebugEnabled ( ) ) SibTr . debug ( tc , "The destination is currently held open by us" ) ; try { cacheSession . close ( ) ; convState . setCachedConsumer ( null ) ; } catch ( SIException e ) { if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isDebugEnabled ( ) ) SibTr . debug ( tc , "Unable to close cached consumer" , e ) ; } } } } connection . deleteTemporaryDestination ( destAddress ) ; try { conversation . send ( poolManager . allocate ( ) , JFapChannelConstants . SEG_DELETE_TEMP_DESTINATION_R , requestNumber , JFapChannelConstants . PRIORITY_MEDIUM , true , ThrottlingPolicy . BLOCK_THREAD , null ) ; } catch ( SIException e ) { FFDCFilter . processException ( e , CLASS_NAME + ".rcvDeleteTempDestination" , CommsConstants . STATICCATDESTINATION_DESTDELETE_01 ) ; if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isDebugEnabled ( ) ) SibTr . debug ( tc , e . getMessage ( ) , e ) ; SibTr . error ( tc , "COMMUNICATION_ERROR_SICO2022" , e ) ; } } catch ( SINotAuthorizedException e ) { if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isDebugEnabled ( ) ) SibTr . debug ( tc , e . getMessage ( ) , e ) ; StaticCATHelper . sendExceptionToClient ( e , null , conversation , requestNumber ) ; } catch ( SIException e ) { if ( ! convState . hasMETerminated ( ) ) { FFDCFilter . processException ( e , CLASS_NAME + ".rcvDeleteTempDestination" , CommsConstants . STATICCATDESTINATION_DESTDELETE_02 ) ; } if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isDebugEnabled ( ) ) SibTr . debug ( tc , e . getMessage ( ) , e ) ; StaticCATHelper . sendExceptionToClient ( e , CommsConstants . STATICCATDESTINATION_DESTDELETE_02 , conversation , requestNumber ) ; } request . release ( allocatedFromBufferPool ) ; if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isEntryEnabled ( ) ) SibTr . exit ( tc , "rcvDeleteTempDestination" ) ; }
@param request
@param conversation
@param requestNumber
@param allocatedFromBufferPool
@param partOfExchange