View Javadoc

1   /*
2    * Copyright (c) 2006 Stiftung Deutsches Elektronen-Synchroton,
3    * Member of the Helmholtz Association, (DESY), HAMBURG, GERMANY.
4    *
5    * THIS SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN "../AS IS" BASIS.
6    * WITHOUT WARRANTY OF ANY KIND, EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED
7    * TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR PARTICULAR PURPOSE AND
8    * NON-INFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
9    * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
10   * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
11   * THE USE OR OTHER DEALINGS IN THE SOFTWARE. SHOULD THE SOFTWARE PROVE DEFECTIVE
12   * IN ANY RESPECT, THE USER ASSUMES THE COST OF ANY NECESSARY SERVICING, REPAIR OR
13   * CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE.
14   * NO USE OF ANY SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
15   * DESY HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS,
16   * OR MODIFICATIONS.
17   * THE FULL LICENSE SPECIFYING FOR THE SOFTWARE THE REDISTRIBUTION, MODIFICATION,
18   * USAGE AND OTHER RIGHTS AND OBLIGATIONS IS INCLUDED WITH THE DISTRIBUTION OF THIS
19   * PROJECT IN THE FILE LICENSE.HTML. IF THE LICENSE IS NOT INCLUDED YOU MAY FIND A COPY
20   * AT HTTP://WWW.DESY.DE/LEGAL/LICENSE.HTM
21   */
22  
23  package de.desy.acop.transport.adapters;
24  
25  
26  import java.util.Map;
27  
28  import de.desy.acop.transport.ConnectionFailed;
29  import de.desy.acop.transport.ConnectionParameters;
30  
31  
32  /**
33   * 
34   * @author Jaka Bobnar, Cosylab
35   *
36   */
37  public interface AdapterFactory
38  {
39  	/**
40  	 * Returns data source for parameters and increases use count for that data
41  	 * source for 1. If adapter does not already exists, it is created.
42  	 *
43  	 * @param param parameters for the data source
44  	 *
45  	 * @return data source 
46  	 */
47  	public AcopTransportDataSource createDataSource(ConnectionParameters param) throws ConnectionFailed;
48  
49  	/**
50  	 * Returns adapter assotiated with the parameters, does not increase use
51  	 * count. If no data source is associated, then create is called.
52  	 *
53  	 * @param param parameters for the data source
54  	 *
55  	 * @return 
56  	 */
57  	public AcopTransportDataSource getDataSource(ConnectionParameters param) throws ConnectionFailed;
58  
59  	/**
60  	 * Decreases use count on data source. If use count reaches 0, then destroys
61  	 * data source and releases all handles to the data source.
62  	 *
63  	 * @param ds data source to be destroyed
64  	 */
65  	public void releaseDataSource(AcopTransportDataSource ds);
66  
67  	/**
68  	 * Decreases use count on data source associated with parameters. 
69  	 * If use count reaches 0, then destroys data source and releases all handles 
70  	 * to the data source.
71  	 * 
72  	 * @param param 
73  	 * @return released DataSource 
74  	 */
75  	public AcopTransportDataSource releaseDataSource(ConnectionParameters param);
76  	
77  	/**
78  	 * Destroys all data source and clears all cache information.
79  	 */
80  	public void clear();
81  	
82  	/**
83  	 * Method returns the characteristics for specified parameters. Characteristics should
84  	 * be read from cache (from DataSource) if DataSource associated with these parameters 
85  	 * exists. If not, characteristics should be obtained by other means. 
86  	 * @param param
87  	 * @return
88  	 * @throws ConnectionFailed
89  	 * 
90  	 */
91  	public Map<String, Object> getCharacteristics(ConnectionParameters param) throws ConnectionFailed;
92  }
93  
94  /* __oOo__ */