001package org.intellimate.izou.sdk.frameworks.permanentSoundOutput.output; 002 003import org.intellimate.izou.identification.Identifiable; 004import org.intellimate.izou.identification.IdentificationManager; 005import org.intellimate.izou.sdk.frameworks.permanentSoundOutput.events.EndedEvent; 006import org.intellimate.izou.sdk.frameworks.permanentSoundOutput.events.StartEvent; 007import org.intellimate.izou.sdk.util.ContextProvider; 008import org.intellimate.izou.sdk.util.FireEvent; 009 010import java.util.Optional; 011 012/** 013 * interface which provides various methods to 014 * @author LeanderK 015 * @version 1.0 016 */ 017public interface PermanentSoundHelper extends Identifiable, FireEvent, ContextProvider { 018 019 /** 020 * fires an StartEvent 021 * @param isUsingJava true if using java, false if not (and for example a C-library) 022 */ 023 default void startedSound(boolean isUsingJava) { 024 Optional<StartEvent> startEvent = IdentificationManager.getInstance().getIdentification(this) 025 .flatMap(id -> StartEvent.createStartEvent(id, isUsingJava)); 026 if (!startEvent.isPresent()) { 027 getContext().getLogger().error("unable to fire startEvent"); 028 } else { 029 getContext().getEvents().distributor().fireEventConcurrently(startEvent.get()); 030 } 031 } 032 033 /** 034 * fires an EndedEvent 035 */ 036 default void endedSound() { 037 Optional<EndedEvent> ended = IdentificationManager.getInstance().getIdentification(this) 038 .flatMap(EndedEvent::createEndedEvent); 039 if (!ended.isPresent()) { 040 getContext().getLogger().error("unable to fire ended"); 041 } else { 042 getContext().getEvents().distributor().fireEventConcurrently(ended.get()); 043 } 044 } 045}