src/main/java/org/intellimate/izou/sdk/frameworks/permanentSoundOutput/output/SimplePermanentSoundOutputPlugin.java
@Override
    public EventModel blockingQueueHandling() throws InterruptedException {
        EventModel eventModel = super.blockingQueueHandling();
        if (eventModel.containsDescriptor(MuteEvent.ID)) {
            List<ResourceModel> resourceModels =
                    eventModel.getListResourceContainer().provideResource(SelectorResource.RESOURCE_ID);
            if (resourceModels.isEmpty()) {
                mute();
            } else {
                resourceModels.stream()
                        .map(resourceModel -> resourceModel.getResource() instanceof Identification ?
                                ((Identification) resourceModel.getResource()) : null)
                        .filter(Objects::nonNull)
                        .filter(this::isOwner)
                        .findAny()
                        .ifPresent(id -> mute());
            }
        }
        if (eventModel.containsDescriptor(UnMuteEvent.ID)) {
            List<ResourceModel> resourceModels =
                    eventModel.getListResourceContainer().provideResource(SelectorResource.RESOURCE_ID);
            if (resourceModels.isEmpty()) {
                unMute();
            } else {
                resourceModels.stream()
                        .map(resourceModel -> resourceModel.getResource() instanceof Identification ?
                                ((Identification) resourceModel.getResource()) : null)
                        .filter(Objects::nonNull)
                        .filter(this::isOwner)
                        .findAny()
                        .ifPresent(id -> unMute());
            }
        }
        if (eventModel.containsDescriptor(StopEvent.ID)) {
            List<ResourceModel> resourceModels =
                    eventModel.getListResourceContainer().provideResource(SelectorResource.RESOURCE_ID);
            if (resourceModels.isEmpty()) {
                stopSound();
            } else {
                resourceModels.stream()
                        .map(resourceModel -> resourceModel.getResource() instanceof Identification ?
                                ((Identification) resourceModel.getResource()) : null)
                        .filter(Objects::nonNull)
                        .filter(this::isOwner)
                        .findAny()
                        .ifPresent(id -> stopSound());
            }
        }
        return eventModel;
    }
@Override
    public EventModel blockingQueueHandling() throws InterruptedException {
        EventModel eventModel = super.blockingQueueHandling();
        if (eventModel.containsDescriptor(MuteEvent.ID)) {
            List<ResourceModel> resourceModels =
                    eventModel.getListResourceContainer().provideResource(SelectorResource.RESOURCE_ID);
            if (resourceModels.isEmpty()) {
                mute();
            } else {
                resourceModels.stream()
                        .map(resourceModel -> resourceModel.getResource() instanceof Identification ?
                                ((Identification) resourceModel.getResource()) : null)
                        .filter(Objects::nonNull)
                        .filter(this::isOwner)
                        .findAny()
                        .ifPresent(id -> mute());
            }
        }
        if (eventModel.containsDescriptor(UnMuteEvent.ID)) {
            List<ResourceModel> resourceModels =
                    eventModel.getListResourceContainer().provideResource(SelectorResource.RESOURCE_ID);
            if (resourceModels.isEmpty()) {
                unMute();
            } else {
                resourceModels.stream()
                        .map(resourceModel -> resourceModel.getResource() instanceof Identification ?
                                ((Identification) resourceModel.getResource()) : null)
                        .filter(Objects::nonNull)
                        .filter(this::isOwner)
                        .findAny()
                        .ifPresent(id -> unMute());
            }
        }
        if (eventModel.containsDescriptor(StopEvent.ID)) {
            List<ResourceModel> resourceModels =
                    eventModel.getListResourceContainer().provideResource(SelectorResource.RESOURCE_ID);
            if (resourceModels.isEmpty()) {
                stopSound();
            } else {
                resourceModels.stream()
                        .map(resourceModel -> resourceModel.getResource() instanceof Identification ?
                                ((Identification) resourceModel.getResource()) : null)
                        .filter(Objects::nonNull)
                        .filter(this::isOwner)
                        .findAny()
                        .ifPresent(id -> stopSound());
            }
        }
        return eventModel;
    }
@ Override public EventModel blockingQueueHandling ( ) throws InterruptedException { EventModel eventModel = super . blockingQueueHandling ( ) ; if ( eventModel . containsDescriptor ( MuteEvent . ID ) ) { List < ResourceModel > resourceModels = eventModel . getListResourceContainer ( ) . provideResource ( SelectorResource . RESOURCE_ID ) ; if ( resourceModels . isEmpty ( ) ) { mute ( ) ; } else { resourceModels . stream ( ) . map ( resourceModel -> resourceModel . getResource ( ) instanceof Identification ? ( ( Identification ) resourceModel . getResource ( ) ) : null ) . filter ( Objects :: nonNull ) . filter ( this :: isOwner ) . findAny ( ) . ifPresent ( id -> mute ( ) ) ; } } if ( eventModel . containsDescriptor ( UnMuteEvent . ID ) ) { List < ResourceModel > resourceModels = eventModel . getListResourceContainer ( ) . provideResource ( SelectorResource . RESOURCE_ID ) ; if ( resourceModels . isEmpty ( ) ) { unMute ( ) ; } else { resourceModels . stream ( ) . map ( resourceModel -> resourceModel . getResource ( ) instanceof Identification ? ( ( Identification ) resourceModel . getResource ( ) ) : null ) . filter ( Objects :: nonNull ) . filter ( this :: isOwner ) . findAny ( ) . ifPresent ( id -> unMute ( ) ) ; } } if ( eventModel . containsDescriptor ( StopEvent . ID ) ) { List < ResourceModel > resourceModels = eventModel . getListResourceContainer ( ) . provideResource ( SelectorResource . RESOURCE_ID ) ; if ( resourceModels . isEmpty ( ) ) { stopSound ( ) ; } else { resourceModels . stream ( ) . map ( resourceModel -> resourceModel . getResource ( ) instanceof Identification ? ( ( Identification ) resourceModel . getResource ( ) ) : null ) . filter ( Objects :: nonNull ) . filter ( this :: isOwner ) . findAny ( ) . ifPresent ( id -> stopSound ( ) ) ; } } return eventModel ; }
Default implementation waits until a new Event has been received and then processes it.
<p>
This method is made to be overwritten as seen fit by the developer

@return the recently added Event-instance to be processed by the outputPlugin
@throws InterruptedException if interrupted while waiting
Default implementation waits until a new Event has been received and then processes it . <p > This method is made to be overwritten as seen fit by the developer