class QueueRemovalMessage extends PooledDistributionMessage {

  boolean removeQueueEvent(String regionName, HARegionQueue hrq, EventID id) {
    // Fix for bug 39516: inline removal of events by QRM.
    // dm.getWaitingThreadPool().execute(new Runnable() {
    // public void run()
    // {
    boolean interrupted = Thread.interrupted();
    try {
      if (logger.isTraceEnabled()) {
        logger.trace("QueueRemovalMessage: removing dispatched events on queue {} for {}",
            regionName, id);
      }
      hrq.removeDispatchedEvents(id);
    } catch (RegionDestroyedException ignore) {
      logger.info(
          "Queue found destroyed while processing the last dispatched sequence ID for a HARegionQueue's DACE. The event ID is {} for HARegion with name={}",
          new Object[] {id, regionName});
    } catch (CancelException ignore) {
      return false;
    } catch (CacheException e) {
      logger.error(String.format(
          "QueueRemovalMessage::process:Exception in processing the last dispatched sequence ID for a HARegionQueue's DACE. The problem is with event ID, %s for HARegion with name=%s",
          regionName, id),
          e);
    } catch (InterruptedException ignore) {
      Thread.currentThread().interrupt();
      return false;
    } catch (RejectedExecutionException ignore) {
      interrupted = true;
    } finally {
      if (interrupted) {
        Thread.currentThread().interrupt();
      }
    }
    return true;
  }

  public  QueueRemovalMessage();

}