<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" /><title>ServiceRegistry xref</title>
<link type="text/css" rel="stylesheet" href="../../../../stylesheet.css" />
</head>
<body>
<div id="overview"><a href="../../../../../apidocs/org/apache/mina/registry/ServiceRegistry.html">View Javadoc</a></div><pre>

<a name="1" href="#1">1</a>   <em class="comment">/*</em>
<a name="2" href="#2">2</a>   <em class="comment"> *   @(#) $Id: ServiceRegistry.java 327113 2005-10-21 06:59:15Z trustin $</em>
<a name="3" href="#3">3</a>   <em class="comment"> *</em>
<a name="4" href="#4">4</a>   <em class="comment"> *   Copyright 2004 The Apache Software Foundation</em>
<a name="5" href="#5">5</a>   <em class="comment"> *</em>
<a name="6" href="#6">6</a>   <em class="comment"> *   Licensed under the Apache License, Version 2.0 (the "License");</em>
<a name="7" href="#7">7</a>   <em class="comment"> *   you may not use this file except in compliance with the License.</em>
<a name="8" href="#8">8</a>   <em class="comment"> *   You may obtain a copy of the License at</em>
<a name="9" href="#9">9</a>   <em class="comment"> *</em>
<a name="10" href="#10">10</a>  <em class="comment"> *       <a href="http://www.apache.org/licenses/LICENSE-2.0" target="alexandria_uri">http://www.apache.org/licenses/LICENSE-2.0</a></em>
<a name="11" href="#11">11</a>  <em class="comment"> *</em>
<a name="12" href="#12">12</a>  <em class="comment"> *   Unless required by applicable law or agreed to in writing, software</em>
<a name="13" href="#13">13</a>  <em class="comment"> *   distributed under the License is distributed on an "AS IS" BASIS,</em>
<a name="14" href="#14">14</a>  <em class="comment"> *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</em>
<a name="15" href="#15">15</a>  <em class="comment"> *   See the License for the specific language governing permissions and</em>
<a name="16" href="#16">16</a>  <em class="comment"> *   limitations under the License.</em>
<a name="17" href="#17">17</a>  <em class="comment"> *</em>
<a name="18" href="#18">18</a>  <em class="comment"> */</em>
<a name="19" href="#19">19</a>  <strong>package</strong> <a href="../../../../org/apache/mina/registry/package-summary.html">org.apache.mina.registry</a>;
<a name="20" href="#20">20</a>  
<a name="21" href="#21">21</a>  <strong>import</strong> java.io.IOException;
<a name="22" href="#22">22</a>  <strong>import</strong> java.util.Set;
<a name="23" href="#23">23</a>  
<a name="24" href="#24">24</a>  <strong>import</strong> org.apache.mina.common.TransportType;
<a name="25" href="#25">25</a>  <strong>import</strong> org.apache.mina.io.IoAcceptor;
<a name="26" href="#26">26</a>  <strong>import</strong> org.apache.mina.io.IoHandler;
<a name="27" href="#27">27</a>  <strong>import</strong> org.apache.mina.protocol.ProtocolAcceptor;
<a name="28" href="#28">28</a>  <strong>import</strong> org.apache.mina.protocol.ProtocolProvider;
<a name="29" href="#29">29</a>  
<a name="30" href="#30">30</a>  <em>/**<em>*</em></em>
<a name="31" href="#31">31</a>  <em> * Interface for the internet service registry. The registry is used by MINA</em>
<a name="32" href="#32">32</a>  <em> * to associate services with ports and transport protocols.</em>
<a name="33" href="#33">33</a>  <em> * </em>
<a name="34" href="#34">34</a>  <em> * @author The Apache Directory Project (dev@directory.apache.org)</em>
<a name="35" href="#35">35</a>  <em> * @version $Rev: 327113 $, $Date: 2005-10-21 15:59:15 +0900 $</em>
<a name="36" href="#36">36</a>  <em> */</em>
<a name="37" href="#37">37</a>  <strong>public</strong> <strong>interface</strong> <a href="../../../../org/apache/mina/registry/ServiceRegistry.html">ServiceRegistry</a>
<a name="38" href="#38">38</a>  {
<a name="39" href="#39">39</a>      <em>/**<em>*</em></em>
<a name="40" href="#40">40</a>  <em>     * Binds the specified I/O handler to the specified service.</em>
<a name="41" href="#41">41</a>  <em>     */</em>
<a name="42" href="#42">42</a>      <strong>void</strong> bind( Service service, IoHandler ioHandler ) throws IOException;
<a name="43" href="#43">43</a>  
<a name="44" href="#44">44</a>      <em>/**<em>*</em></em>
<a name="45" href="#45">45</a>  <em>     * Binds the specified protocol provider to the specified service.</em>
<a name="46" href="#46">46</a>  <em>     */</em>
<a name="47" href="#47">47</a>      <strong>void</strong> bind( Service service, ProtocolProvider protocolProvider )
<a name="48" href="#48">48</a>              throws IOException;
<a name="49" href="#49">49</a>  
<a name="50" href="#50">50</a>      <em>/**<em>*</em></em>
<a name="51" href="#51">51</a>  <em>     * Unbinds the specified service (and its aggregated I/O handler or</em>
<a name="52" href="#52">52</a>  <em>     * protocol provider). </em>
<a name="53" href="#53">53</a>  <em>     */</em>
<a name="54" href="#54">54</a>      <strong>void</strong> unbind( Service service );
<a name="55" href="#55">55</a>      
<a name="56" href="#56">56</a>      <em>/**<em>*</em></em>
<a name="57" href="#57">57</a>  <em>     * Unbinds all services (and their aggregated I/O handlers or</em>
<a name="58" href="#58">58</a>  <em>     * protocol providers). </em>
<a name="59" href="#59">59</a>  <em>     */</em>
<a name="60" href="#60">60</a>      <strong>void</strong> unbindAll();
<a name="61" href="#61">61</a>  
<a name="62" href="#62">62</a>      <em>/**<em>*</em></em>
<a name="63" href="#63">63</a>  <em>     * Returns {@link Set} of all services bound in this registry.</em>
<a name="64" href="#64">64</a>  <em>     */</em>
<a name="65" href="#65">65</a>      Set getAllServices();
<a name="66" href="#66">66</a>      
<a name="67" href="#67">67</a>      <em>/**<em>*</em></em>
<a name="68" href="#68">68</a>  <em>     * Returns {@link Set} of services bound in this registry with the</em>
<a name="69" href="#69">69</a>  <em>     * specified service(or protocol) name.</em>
<a name="70" href="#70">70</a>  <em>     */</em>
<a name="71" href="#71">71</a>      Set getServices(String name);
<a name="72" href="#72">72</a>  
<a name="73" href="#73">73</a>      <em>/**<em>*</em></em>
<a name="74" href="#74">74</a>  <em>     * Returns {@link Set} of services bound in this registry with the</em>
<a name="75" href="#75">75</a>  <em>     * specified transport type.</em>
<a name="76" href="#76">76</a>  <em>     */</em>
<a name="77" href="#77">77</a>      Set getServices(<a href="../../../../org/apache/mina/common/TransportType.html">TransportType</a> transportType);
<a name="78" href="#78">78</a>      
<a name="79" href="#79">79</a>      <em>/**<em>*</em></em>
<a name="80" href="#80">80</a>  <em>     * Returns {@link Set} of services bound in this registry with the</em>
<a name="81" href="#81">81</a>  <em>     * specified port number.</em>
<a name="82" href="#82">82</a>  <em>     */</em>
<a name="83" href="#83">83</a>      Set getServices(<strong>int</strong> port);
<a name="84" href="#84">84</a>  
<a name="85" href="#85">85</a>      <a href="../../../../org/apache/mina/io/IoAcceptor.html">IoAcceptor</a> getIoAcceptor( TransportType transportType );
<a name="86" href="#86">86</a>      
<a name="87" href="#87">87</a>      <a href="../../../../org/apache/mina/protocol/ProtocolAcceptor.html">ProtocolAcceptor</a> getProtocolAcceptor( TransportType transportType );
<a name="88" href="#88">88</a>  }
</pre>
<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
</html>

