protected AbstractMessage handleInterested(final InterestedMessage incomingMessage) { if (logger.isDebugEnabled()) logger.debug("processing message:" + incomingMessage.toString()); Subscriber subscriber; if (null != (subscriber = this.videoSignaling .getUploadSlotManager() .getGrantedUploadSlotRequest( incomingMessage.getSender(), incomingMessage.getSegmentIdentifier()))) { logger.warn(subscriber + " is already granted!!"); return this.videoSignaling.getGranted( incomingMessage.getSegmentIdentifier(), subscriber.getTimeToTimeoutMillis(), UploadSlot.INACTIVITY_TIMEOUT_S * 1000, incomingMessage.getSender(), false); } int timeoutMillis = this.videoSignaling .getUploadSlotManager() .setInterestedGetTimeout( incomingMessage.getSender(), incomingMessage.getSegmentIdentifier(), !incomingMessage.isNot()); if (incomingMessage.isNot()) { // if not interested, should return subscribed return this.videoSignaling.getSubscribed( incomingMessage.getSegmentIdentifier(), null, timeoutMillis, incomingMessage.getSender(), false); } else { // must return Queued with new (extended) timeout.. and synchronize with the possible Granted return this.videoSignaling.getQueued( incomingMessage.getSegmentIdentifier(), timeoutMillis, incomingMessage.getSender(), false); } }