package com.netthreads.network.osc.router.service;
import java.util.Collection;
import javax.sound.midi.MidiDevice;
import com.google.inject.ImplementedBy;
/**
* We define interface in case we choose to inject it.
*
*/
@ImplementedBy(MIDIDeviceCacheImpl.class)
public interface MIDIDeviceCache
{
/**
* Return named device.
*
* @param name
* The device name.
*
* @return The device or null if not found.
*/
public MidiDevice get(String name);
/**
* Put device in cache.
*
* @param name
*
* @param device
*/
public void put(String name, MidiDevice device);
/**
* Set device as selected. This will mark it for opening when service
* activated and closed when stopped.
*
* @param name
* @param state
*/
public void select(String name, boolean state);
/**
* Open selected devices.
*
*/
public void openAll();
/**
* Open Device.
*
* @param name
*
* @return The open status.
*/
public boolean openDevice(String name);
/**
* Close device.
*
* @param name
*/
public void closeDevice(String name);
/**
* Close selected devices.
*
*/
public void closeAll();
/**
* Reload cache.
*
*/
public void reload();
/**
* Return devices.
*
* @return The devices.
*/
public Collection<MidiDevice> getValues();
/**
* Return device names.
*
* @return The list of names.
*/
public String[] getNames();
}