/* * @(#)Connector.java 1.6 02/08/21 * * Copyright (c) 1996-2002 Sun Microsystems, Inc. All rights reserved. */ package com.sun.media; import javax.media.*; import javax.media.Format; /** * Defines common interface to input and output Connectors. * Inter Module Connection is made of InputConnector and OutputConnector and is essentially a cyclic queue of * references to Buffer Objects.<br> * The queue is constructed at the Connectors connectTo() method, so the suggested size should be * set before that.<br> * * <i><br> Note that these connectors are almost symetrical so they can support both * push and pull connection. <br> * In addition the two threads sync. mechanism is also supported by this suggested API. </i> * * * * * * @see Module * @see InputConnector * @see OutputConnector * @see javax.media.Format * **/ public interface Connector { /** constant to indicate that this connector runs on "Push" protocol. * meaning writing to this connector is * propagated to the connected InputConnector. **/ public static int ProtocolPush=0; /** constant to indicate that this connector runs on "Safe" protocol. * meaning reading and writing from this connection is * done using thread safe monitor. **/ public static int ProtocolSafe=1; /** * Selects a format for this Connector (the default is null). * The <b>setFormat()</b> method is typically called by the Manager * as part of the Connector connection method call. * The connector should delegate this call to its owning Module. **/ public void setFormat(Format format); /** * The selected format. * If <b>setFormat()</b> has not been called, * <b>getFormat()</b> will return null. * * @return the currently selected format. */ public Format getFormat(); /** * sets the <b>minimum</b> number of buffer objects this Connector should create. * The default value should be one buffer object. **/ public void setSize(int numOfBufferObjects); /** * gets the <b>minimum</b> number of buffer objects this Connector should create. **/ public int getSize(); /** * restores this Connector to its initial state: * removes all the buffer locks. * this method is typically called when the owning Module is requested to reset. **/ public void reset(); /** returns the name of this Connector in the owning Module **/ public String getName(); /** sets the name of this Connector. Called by the owning Module registerConnector() method **/ public void setName(String name); /** determines the data transfer protocol used by this connector.<br> * <i>Perhaps the only way to change the protocol is in the constructor ? </i> * @param protocol either <i>ProtocolPush, ProtocolSafe</i> **/ public void setProtocol(int protocol); /** returns the data transfer protocol used by this connector. <br> * either <i>ProtocolPush, ProtocolSafe</i> **/ public int getProtocol(); /** returns the circular buffer Object which is locked (by wait()/notify() )during safe data transfer. <br> * <i>This method should not really be part of the API, but it is put here in order to remove * implementation dependencies.</i> **/ public Object getCircularBuffer(); /** Sets the circular buffer object of the connection. This method is called only by * the OutputConnector.connectTo() method.<br> * <i>This method should not really be part of the API, but it is put here in order to remove * implementation dependencies.</i> * @param circularBuffer the circular buffer used by this Connection **/ public void setCircularBuffer(Object circularBuffer); /** * sets the Module which registered this Connector. * **/ public void setModule(Module module) ; /** * Returns the Module which registered this Connector. **/ public Module getModule(); }