You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by bu...@apache.org on 2019/03/27 05:52:01 UTC
svn commit: r1042588 - in /websites/staging/mina/trunk/content: ./
mina-project/userguide/ch3-service/
Author: buildbot
Date: Wed Mar 27 05:52:01 2019
New Revision: 1042588
Log:
Staging update by buildbot for mina
Added:
websites/staging/mina/trunk/content/mina-project/userguide/ch3-service/ch3.1-io-service.html
websites/staging/mina/trunk/content/mina-project/userguide/ch3-service/ch3.2-io-service-details.html
websites/staging/mina/trunk/content/mina-project/userguide/ch3-service/ch3.3-acceptor.html
websites/staging/mina/trunk/content/mina-project/userguide/ch3-service/ch3.4-connector.html
Removed:
websites/staging/mina/trunk/content/mina-project/userguide/ch3-service/acceptor.html
websites/staging/mina/trunk/content/mina-project/userguide/ch3-service/connector.html
websites/staging/mina/trunk/content/mina-project/userguide/ch3-service/io-service-details.html
websites/staging/mina/trunk/content/mina-project/userguide/ch3-service/io-service.html
Modified:
websites/staging/mina/trunk/content/ (props changed)
Propchange: websites/staging/mina/trunk/content/
------------------------------------------------------------------------------
--- cms:source-revision (original)
+++ cms:source-revision Wed Mar 27 05:52:01 2019
@@ -1 +1 @@
-1856368
+1856369
Added: websites/staging/mina/trunk/content/mina-project/userguide/ch3-service/ch3.1-io-service.html
==============================================================================
--- websites/staging/mina/trunk/content/mina-project/userguide/ch3-service/ch3.1-io-service.html (added)
+++ websites/staging/mina/trunk/content/mina-project/userguide/ch3-service/ch3.1-io-service.html Wed Mar 27 05:52:01 2019
@@ -0,0 +1,318 @@
+<!DOCTYPE html>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<html>
+<head>
+ <title>3.1 - IO Service Introduction — Apache MINA</title>
+
+ <link href="./../../../css/common.css" rel="stylesheet" type="text/css">
+ <link href="./../../../css/mina.css" rel="stylesheet" type="text/css">
+
+
+ <link rel="shortcut icon" href="./../../../staticresources/images/mina-icon_16x16.png"/>
+
+</head>
+ <body>
+ <div id="container">
+ <div id="header">
+ <div id="subProjectsNavBar">
+ <a href="./../../../">
+
+ Apache MINA Project
+
+ </a>
+ |
+ <a href="./../../../mina-project/index.html">
+
+ <strong>MINA</strong>
+
+ </a>
+ |
+ <a href="./../../../asyncweb-project/index.html">
+
+ AsyncWeb
+
+ </a>
+ |
+ <a href="./../../../ftpserver-project/index.html">
+
+ FtpServer
+
+ </a>
+ |
+ <a href="./../../../sshd-project/index.html">
+
+ SSHD
+
+ </a>
+ |
+ <a href="./../../../vysper-project/index.html">
+
+ Vysper
+
+ </a>
+ </div><!-- subProjectsNavBar -->
+ </div><!-- header -->
+ <div id="content">
+ <div id="leftColumn">
+
+
+
+
+
+ <style type="text/css">
+/* The following code is added by mdx_elementid.py
+ It was originally lifted from http://subversion.apache.org/style/site.css */
+/*
+ * Hide class="elementid-permalink", except when an enclosing heading
+ * has the :hover property.
+ */
+.headerlink, .elementid-permalink {
+ visibility: hidden;
+}
+h2:hover > .headerlink, h3:hover > .headerlink, h1:hover > .headerlink, h6:hover > .headerlink, h4:hover > .headerlink, h5:hover > .headerlink, dt:hover > .elementid-permalink { visibility: visible }</style>
+<div id="navigation">
+
+ <h5>Latest Downloads</h5>
+ <ul>
+ <li><a href="./../../../mina-project/downloads_2_0.html">Mina 2.0.20</a></li>
+ <li><a href="./../../../mina-project/downloads_2_1.html">Mina 2.1.0</a></li>
+ <li><a href="./../../../mina-project/downloads_old.html">Mina old versions</a></li>
+ </ul>
+ <h5>Documentation</h5>
+ <ul>
+ <li><a href="./../../../mina-project/documentation.html" class="external-link" rel="nofollow">Base documentation</a></li>
+ <li><a href="./../../../mina-project/userguide/user-guide-toc.html" class="external-link" rel="nofollow">User guide</a></li>
+ <li><a href="./../../../mina-project/2.1-vs-2.0.html" class="external-link" rel="nofollow">2.1 vs 2.0</a></li>
+ <li><a href="./../../../mina-project/features.html" class="external-link" rel="nofollow">Features</a></li>
+ <li><a href="./../../../mina-project/road-map.html" class="external-link" rel="nofollow">Road Map</a></li>
+ <li><a href="./../../../mina-project/quick-start-guide.html" class="external-link" rel="nofollow">Quick Start Guide</a></li>
+ <li><a href="./../../../mina-project/faq.html" class="external-link" rel="nofollow">FAQ</a></li>
+ </ul>
+ <h5>Resources</h5>
+ <ul>
+ <li><a href="./../../../mina-project/mailing-lists.html" class="external-link" rel="nofollow">Mailing lists & IRC</a></li>
+ <li><a href="./../../../mina-project/issue-tracking.html" class="external-link" rel="nofollow">Issue tracking</a></li>
+ <li><a href="./../../../mina-project/sources.html" class="external-link" rel="nofollow">Sources</a></li>
+ <li><a href="./../../../mina-project/gen-docs/latest-2.0/apidocs/index.html" class="external-link" rel="nofollow">API Javadoc 2.0.20</a></li>
+ <li><a href="./../../../mina-project/gen-docs/latest-2.1/apidocs/index.html" class="external-link" rel="nofollow">API Javadoc 2.1.0</a></li>
+ <li><a href="./../../../mina-project/gen-docs/latest-2.0/xref/index.html" class="external-link" rel="nofollow">API xref 2.0.20</a></li>
+ <li><a href="./../../../mina-project/gen-docs/latest-2.1/xref/index.html" class="external-link" rel="nofollow">API xref 2.1.0</a></li>
+ <li><a href="./../../../mina-project/performances.html" class="external-link" rel="nofollow">Performances</a></li>
+ <li><a href="./../../../mina-project/testimonials.html" class="external-link" rel="nofollow">Testimonials</a></li>
+ <li><a href="./../../../mina-project/conferences.html" class="external-link" rel="nofollow">Conferences</a></li>
+ <li><a href="./../../../mina-project/developer-guide.html" class="external-link" rel="nofollow">Developers Guide</a></li>
+ <li><a href="./../../../mina-project/related-projects.html" class="external-link" rel="nofollow">Related Projects</a></li>
+ <li><a href="https://people.apache.org/~vgritsenko/stats/projects/mina.html" class="external-link" rel="nofollow">Statistics</a></li>
+ </ul>
+
+
+ <h5>Community</h5>
+ <ul>
+ <li><a href="https://www.apache.org/foundation/contributing.html" class="external-link" rel="nofollow">Contributing</a></li>
+ <li><a href="./../../../contributors.html" class="external-link" rel="nofollow">Team</a></li>
+ <li><a href="./../../../special-thanks.html" class="external-link" rel="nofollow">Special Thanks</a></li>
+ <li><a href="https://www.apache.org/security/" class="external-link" rel="nofollow">Security</a></li>
+ </ul>
+
+
+ <h5>About Apache</h5>
+ <ul>
+ <li><a href="https://www.apache.org" class="external-link" rel="nofollow">Apache main site</a></li>
+ <li><a href="https://www.apache.org/licenses/" class="external-link" rel="nofollow">License</a></li>
+ <li><a href="https://www.apache.org/foundation/sponsorship.html" title="The ASF sponsorship program" class="external-link" rel="nofollow">Sponsorship program</a></li>
+ <li><a href="https://www.apache.org/foundation/thanks.html" class="external-link" rel="nofollow">Thanks</a></li>
+ </ul>
+
+
+ <h3><a name="Navigation-Upcoming"></a>Upcoming</h3>
+ <ul>
+ <li>No event</li>
+ </ul>
+
+</div>
+
+<!-- navigation -->
+
+
+ </div><!-- leftColumn -->
+ <div id="rightColumn">
+
+
+
+ <div class="nav">
+ <div class="nav_prev">
+
+
+
+ </div>
+ <div class="nav_up">
+
+ <a href="ch3-service.html">Chapter 3 - Service</a>
+
+ </div>
+ <div class="nav_next">
+
+ <a href="ch3.2-io-service-details.html">3.2 - IoService Details</a>
+
+ </div>
+ <div class="clearfix"></div>
+ </div>
+
+
+<style type="text/css">
+/* The following code is added by mdx_elementid.py
+ It was originally lifted from http://subversion.apache.org/style/site.css */
+/*
+ * Hide class="elementid-permalink", except when an enclosing heading
+ * has the :hover property.
+ */
+.headerlink, .elementid-permalink {
+ visibility: hidden;
+}
+h2:hover > .headerlink, h3:hover > .headerlink, h1:hover > .headerlink, h6:hover > .headerlink, h4:hover > .headerlink, h5:hover > .headerlink, dt:hover > .elementid-permalink { visibility: visible }</style>
+<h1 id="31-ioservice-introduction">3.1 - IoService Introduction<a class="headerlink" href="#31-ioservice-introduction" title="Permanent link">¶</a></h1>
+<p><a href="http://mina.apache.org/mina-project/xref/org/apache/mina/core/service/IoService.html">IoService</a> provides basic <strong>I/O</strong> Service and manages <strong>I/O</strong> Sessions within <strong>MINA</strong>. Its one of the most crucial part of <strong>MINA</strong> Architecture. The implementing classes of <em>IoService</em> and child interface, are where most of the low level <strong>I/O</strong> operations are handled.</p>
+<h1 id="ioservice-mind-map">IoService Mind Map<a class="headerlink" href="#ioservice-mind-map" title="Permanent link">¶</a></h1>
+<p>Let's try to see what are the responsibilities of the <em>IoService</em> and it implementing class <a href="http://mina.apache.org/mina-project/xref/org/apache/mina/core/service/AbstractIoService.html">AbstractIoService</a>. Let's take a slightly different approach of first using a <a href="http://en.wikipedia.org/wiki/Mind_map">Mind Map</a> and then jump into the inner working. The Mind Map was created using <a href="http://www.xmind.net/">XMind</a>.</p>
+<p><img alt="" src="../../../staticresources/images/mina/IoService_mindmap.png" /></p>
+<h2 id="responsabilities">Responsabilities<a class="headerlink" href="#responsabilities" title="Permanent link">¶</a></h2>
+<p>As seen in the previous graphic, The <em>IoService</em> has many responsabilities :</p>
+<ul>
+<li>sessions management : Creates and deletes sessions, detect idleness.</li>
+<li>filter chain management : Handles the filtr chain, allowing the user to change the chain on the fly</li>
+<li>handler invocation : Calls the handler when some new message is received, etc </li>
+<li>statistics management : Updates the number of messages sent, bytes sent, and many others</li>
+<li>listeners management : Manages the Listeners a suer can set up</li>
+<li>communication management : Handles the transmission of data, in both side</li>
+</ul>
+<p>All those aspects will be described in the following chapters.</p>
+<h2 id="interface-details">Interface Details<a class="headerlink" href="#interface-details" title="Permanent link">¶</a></h2>
+<p><em>IoService</em> is the base interface for all the <em>IoConnector</em>'s and <em>IoAcceptor</em>'s that provides <strong>I/O</strong> services and manages <strong>I/O</strong> sessions. The interface has all the functions need to perform <strong>I/O</strong> related operations.</p>
+<p>Lets take a deep dive into the various methods in the interface</p>
+<ul>
+<li>getTransportMetadata()</li>
+<li>addListener()</li>
+<li>removeListener()</li>
+<li>isDisposing()</li>
+<li>isDisposed()</li>
+<li>dispose()</li>
+<li>getHandler()</li>
+<li>setHandler()</li>
+<li>getManagedSessions()</li>
+<li>getManagedSessionCount()</li>
+<li>getSessionConfig()</li>
+<li>getFilterChainBuilder()</li>
+<li>setFilterChainBuilder()</li>
+<li>getFilterChain()</li>
+<li>isActive()</li>
+<li>getActivationTime()</li>
+<li>broadcast()</li>
+<li>setSessionDataStructureFactory()</li>
+<li>getScheduledWriteBytes()</li>
+<li>getScheduledWriteMessages()</li>
+<li>getStatistics()</li>
+</ul>
+<h3 id="gettransportmetadata">getTransportMetadata()<a class="headerlink" href="#gettransportmetadata" title="Permanent link">¶</a></h3>
+<p>This method returns the Transport meta-data the <em>IoAcceptor</em> or <em>IoConnector</em> is running. The typical details include provider name (nio, apr, rxtx), connection type (connectionless/connection oriented) etc.</p>
+<h3 id="addlistener">addListener<a class="headerlink" href="#addlistener" title="Permanent link">¶</a></h3>
+<p>Allows to add a <em>IoServiceListener</em> to listen to specific events related to <em>IoService</em>.</p>
+<h3 id="removelistener">removeListener<a class="headerlink" href="#removelistener" title="Permanent link">¶</a></h3>
+<p>Removes specified <em>IoServiceListener</em> attached to this <em>IoService</em>.</p>
+<h3 id="isdisposing">isDisposing<a class="headerlink" href="#isdisposing" title="Permanent link">¶</a></h3>
+<p>This method tells if the service is currently being disposed. As it can take a while, it's useful to know the current status of the service.</p>
+<h3 id="isdisposed">isDisposed<a class="headerlink" href="#isdisposed" title="Permanent link">¶</a></h3>
+<p>This method tells if the service has been disposed. A service will be considered as disposed only when all the resources it has allocated have been released.</p>
+<h3 id="dispose">dispose<a class="headerlink" href="#dispose" title="Permanent link">¶</a></h3>
+<p>This method releases all the resources the service has allocated. As it may take a while, the user should check the service status using the <em>isDisposing()</em> and <em>isDisposed()</em> to know if the service is now disposed completely.</p>
+<p>Always call <em>dispose()</em> when you shutdown a service !</p>
+<h3 id="gethandler">getHandler<a class="headerlink" href="#gethandler" title="Permanent link">¶</a></h3>
+<p>Returns the <em>IoHandler</em> associated with the service.</p>
+<h3 id="sethandler">setHandler<a class="headerlink" href="#sethandler" title="Permanent link">¶</a></h3>
+<p>Sets the <em>IoHandler</em> that will be responsible for handling all the events for the service. The handler contains your application logic !</p>
+<h3 id="getmanagedsessions">getManagedSessions<a class="headerlink" href="#getmanagedsessions" title="Permanent link">¶</a></h3>
+<p>Returns the map of all sessions which are currently managed by this service. A managed session is a session which is added to the service listener. It will be used to process the idle sessions, and other session aspects, depending on the kind of listeners a user adds to a service.</p>
+<h3 id="getmanagedsessioncount">getManagedSessionCount<a class="headerlink" href="#getmanagedsessioncount" title="Permanent link">¶</a></h3>
+<p>Returns the number of all sessions which are currently managed by this service.</p>
+<h3 id="getsessionconfig">getSessionConfig<a class="headerlink" href="#getsessionconfig" title="Permanent link">¶</a></h3>
+<p>Returns the session configuration.</p>
+<h3 id="getfilterchainbuilder">getFilterChainBuilder<a class="headerlink" href="#getfilterchainbuilder" title="Permanent link">¶</a></h3>
+<p>Returns the <em>Filter</em> chain builder. This is useful if one wants to add some new filter that will be injected when the sessions will be created.</p>
+<h3 id="setfilterchainbuilder">setFilterChainBuilder<a class="headerlink" href="#setfilterchainbuilder" title="Permanent link">¶</a></h3>
+<p>Defines the <em>Filter</em> chain builder to use with the service.</p>
+<h3 id="getfilterchain">getFilterChain<a class="headerlink" href="#getfilterchain" title="Permanent link">¶</a></h3>
+<p>Returns the current default <em>Filter</em> chain for the service.</p>
+<h3 id="isactive">isActive<a class="headerlink" href="#isactive" title="Permanent link">¶</a></h3>
+<p>Tells if the service is active or not.</p>
+<h3 id="getactivationtime">getActivationTime<a class="headerlink" href="#getactivationtime" title="Permanent link">¶</a></h3>
+<p>Returns the time when this service was activated. It returns the last time when this service was activated if the service is not anymore active.</p>
+<h3 id="broadcast">broadcast<a class="headerlink" href="#broadcast" title="Permanent link">¶</a></h3>
+<p>Writes the given message to all the managed sessions.</p>
+<h3 id="setsessiondatastructurefactory">setSessionDataStructureFactory<a class="headerlink" href="#setsessiondatastructurefactory" title="Permanent link">¶</a></h3>
+<p>Sets the <em>IoSessionDataStructureFactory</em> that provides related data structures for a new session created by this service.</p>
+<h3 id="getscheduledwritebytes">getScheduledWriteBytes<a class="headerlink" href="#getscheduledwritebytes" title="Permanent link">¶</a></h3>
+<p>Returns the number of bytes scheduled to be written (ie, the bytes stored in memory waiting for the socket to be ready for write).</p>
+<h3 id="getscheduledwritemessages">getScheduledWriteMessages<a class="headerlink" href="#getscheduledwritemessages" title="Permanent link">¶</a></h3>
+<p>Returns the number of messages scheduled to be written (ie, the messages stored in memory waiting for the socket to be ready for write).</p>
+<h3 id="getstatistics">getStatistics<a class="headerlink" href="#getstatistics" title="Permanent link">¶</a></h3>
+<p>Returns the <em>IoServiceStatistics</em> object for this service.</p>
+
+
+ <div class="nav">
+ <div class="nav_prev">
+
+
+
+ </div>
+ <div class="nav_up">
+
+ <a href="ch3-service.html">Chapter 3 - Service</a>
+
+ </div>
+ <div class="nav_next">
+
+ <a href="ch3.2-io-service-details.html">3.2 - IoService Details</a>
+
+ </div>
+ <div class="clearfix"></div>
+ </div>
+
+
+ </div><!-- rightColumn -->
+ <div id="endContent"></div>
+ </div><!-- content -->
+ <div id="footer">© 2003-2019, <a href="https://www.apache.org">The Apache Software Foundation</a> - <a href="./../../../privacy-policy.html">Privacy Policy</a><br />
+ Apache MINA, MINA, Apache Vysper, Vysper, Apache SSHd, SSHd, Apache FtpServer, FtpServer, Apache AsyncWeb, AsyncWeb,
+ Apache, the Apache feather logo, and the Apache Mina project logos are trademarks of The Apache Software Foundation.
+ </div>
+ </div><!-- container -->
+ <script type="text/javascript">
+
+ var _gaq = _gaq || [];
+ _gaq.push(['_setAccount', 'UA-11074178-1']);
+ _gaq.push(['_trackPageview']);
+
+ (function() {
+ var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+ ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+ var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+ })();
+
+ </script>
+ </body>
+</html>
+
Added: websites/staging/mina/trunk/content/mina-project/userguide/ch3-service/ch3.2-io-service-details.html
==============================================================================
--- websites/staging/mina/trunk/content/mina-project/userguide/ch3-service/ch3.2-io-service-details.html (added)
+++ websites/staging/mina/trunk/content/mina-project/userguide/ch3-service/ch3.2-io-service-details.html Wed Mar 27 05:52:01 2019
@@ -0,0 +1,267 @@
+<!DOCTYPE html>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<html>
+<head>
+ <title>3.2 - IoService Details — Apache MINA</title>
+
+ <link href="./../../../css/common.css" rel="stylesheet" type="text/css">
+ <link href="./../../../css/mina.css" rel="stylesheet" type="text/css">
+
+
+ <link rel="shortcut icon" href="./../../../staticresources/images/mina-icon_16x16.png"/>
+
+</head>
+ <body>
+ <div id="container">
+ <div id="header">
+ <div id="subProjectsNavBar">
+ <a href="./../../../">
+
+ Apache MINA Project
+
+ </a>
+ |
+ <a href="./../../../mina-project/index.html">
+
+ <strong>MINA</strong>
+
+ </a>
+ |
+ <a href="./../../../asyncweb-project/index.html">
+
+ AsyncWeb
+
+ </a>
+ |
+ <a href="./../../../ftpserver-project/index.html">
+
+ FtpServer
+
+ </a>
+ |
+ <a href="./../../../sshd-project/index.html">
+
+ SSHD
+
+ </a>
+ |
+ <a href="./../../../vysper-project/index.html">
+
+ Vysper
+
+ </a>
+ </div><!-- subProjectsNavBar -->
+ </div><!-- header -->
+ <div id="content">
+ <div id="leftColumn">
+
+
+
+
+
+ <style type="text/css">
+/* The following code is added by mdx_elementid.py
+ It was originally lifted from http://subversion.apache.org/style/site.css */
+/*
+ * Hide class="elementid-permalink", except when an enclosing heading
+ * has the :hover property.
+ */
+.headerlink, .elementid-permalink {
+ visibility: hidden;
+}
+h2:hover > .headerlink, h3:hover > .headerlink, h1:hover > .headerlink, h6:hover > .headerlink, h4:hover > .headerlink, h5:hover > .headerlink, dt:hover > .elementid-permalink { visibility: visible }</style>
+<div id="navigation">
+
+ <h5>Latest Downloads</h5>
+ <ul>
+ <li><a href="./../../../mina-project/downloads_2_0.html">Mina 2.0.20</a></li>
+ <li><a href="./../../../mina-project/downloads_2_1.html">Mina 2.1.0</a></li>
+ <li><a href="./../../../mina-project/downloads_old.html">Mina old versions</a></li>
+ </ul>
+ <h5>Documentation</h5>
+ <ul>
+ <li><a href="./../../../mina-project/documentation.html" class="external-link" rel="nofollow">Base documentation</a></li>
+ <li><a href="./../../../mina-project/userguide/user-guide-toc.html" class="external-link" rel="nofollow">User guide</a></li>
+ <li><a href="./../../../mina-project/2.1-vs-2.0.html" class="external-link" rel="nofollow">2.1 vs 2.0</a></li>
+ <li><a href="./../../../mina-project/features.html" class="external-link" rel="nofollow">Features</a></li>
+ <li><a href="./../../../mina-project/road-map.html" class="external-link" rel="nofollow">Road Map</a></li>
+ <li><a href="./../../../mina-project/quick-start-guide.html" class="external-link" rel="nofollow">Quick Start Guide</a></li>
+ <li><a href="./../../../mina-project/faq.html" class="external-link" rel="nofollow">FAQ</a></li>
+ </ul>
+ <h5>Resources</h5>
+ <ul>
+ <li><a href="./../../../mina-project/mailing-lists.html" class="external-link" rel="nofollow">Mailing lists & IRC</a></li>
+ <li><a href="./../../../mina-project/issue-tracking.html" class="external-link" rel="nofollow">Issue tracking</a></li>
+ <li><a href="./../../../mina-project/sources.html" class="external-link" rel="nofollow">Sources</a></li>
+ <li><a href="./../../../mina-project/gen-docs/latest-2.0/apidocs/index.html" class="external-link" rel="nofollow">API Javadoc 2.0.20</a></li>
+ <li><a href="./../../../mina-project/gen-docs/latest-2.1/apidocs/index.html" class="external-link" rel="nofollow">API Javadoc 2.1.0</a></li>
+ <li><a href="./../../../mina-project/gen-docs/latest-2.0/xref/index.html" class="external-link" rel="nofollow">API xref 2.0.20</a></li>
+ <li><a href="./../../../mina-project/gen-docs/latest-2.1/xref/index.html" class="external-link" rel="nofollow">API xref 2.1.0</a></li>
+ <li><a href="./../../../mina-project/performances.html" class="external-link" rel="nofollow">Performances</a></li>
+ <li><a href="./../../../mina-project/testimonials.html" class="external-link" rel="nofollow">Testimonials</a></li>
+ <li><a href="./../../../mina-project/conferences.html" class="external-link" rel="nofollow">Conferences</a></li>
+ <li><a href="./../../../mina-project/developer-guide.html" class="external-link" rel="nofollow">Developers Guide</a></li>
+ <li><a href="./../../../mina-project/related-projects.html" class="external-link" rel="nofollow">Related Projects</a></li>
+ <li><a href="https://people.apache.org/~vgritsenko/stats/projects/mina.html" class="external-link" rel="nofollow">Statistics</a></li>
+ </ul>
+
+
+ <h5>Community</h5>
+ <ul>
+ <li><a href="https://www.apache.org/foundation/contributing.html" class="external-link" rel="nofollow">Contributing</a></li>
+ <li><a href="./../../../contributors.html" class="external-link" rel="nofollow">Team</a></li>
+ <li><a href="./../../../special-thanks.html" class="external-link" rel="nofollow">Special Thanks</a></li>
+ <li><a href="https://www.apache.org/security/" class="external-link" rel="nofollow">Security</a></li>
+ </ul>
+
+
+ <h5>About Apache</h5>
+ <ul>
+ <li><a href="https://www.apache.org" class="external-link" rel="nofollow">Apache main site</a></li>
+ <li><a href="https://www.apache.org/licenses/" class="external-link" rel="nofollow">License</a></li>
+ <li><a href="https://www.apache.org/foundation/sponsorship.html" title="The ASF sponsorship program" class="external-link" rel="nofollow">Sponsorship program</a></li>
+ <li><a href="https://www.apache.org/foundation/thanks.html" class="external-link" rel="nofollow">Thanks</a></li>
+ </ul>
+
+
+ <h3><a name="Navigation-Upcoming"></a>Upcoming</h3>
+ <ul>
+ <li>No event</li>
+ </ul>
+
+</div>
+
+<!-- navigation -->
+
+
+ </div><!-- leftColumn -->
+ <div id="rightColumn">
+
+
+
+ <div class="nav">
+ <div class="nav_prev">
+
+ <a href="ch3.1-io-service.html">3.1 - IoService Introduction</a>
+
+ </div>
+ <div class="nav_up">
+
+ <a href="ch3-service.html">Chapter 3 - Service</a>
+
+ </div>
+ <div class="nav_next">
+
+ <a href="ch3.3-acceptor.html">3.3 - Acceptor</a>
+
+ </div>
+ <div class="clearfix"></div>
+ </div>
+
+
+<style type="text/css">
+/* The following code is added by mdx_elementid.py
+ It was originally lifted from http://subversion.apache.org/style/site.css */
+/*
+ * Hide class="elementid-permalink", except when an enclosing heading
+ * has the :hover property.
+ */
+.headerlink, .elementid-permalink {
+ visibility: hidden;
+}
+h2:hover > .headerlink, h3:hover > .headerlink, h1:hover > .headerlink, h6:hover > .headerlink, h4:hover > .headerlink, h5:hover > .headerlink, dt:hover > .elementid-permalink { visibility: visible }</style>
+<h1 id="32-ioservice-details">3.2 - IoService Details<a class="headerlink" href="#32-ioservice-details" title="Permanent link">¶</a></h1>
+<p><em>IoService</em> is an interface that is implemented by the two most important classes in <strong>MINA</strong> :</p>
+<ul>
+<li>IoAcceptor</li>
+<li>IoConnector</li>
+</ul>
+<p>In order to build a server, you need to select an implementation of the <em>IoAcceptor</em> interface. For client applications, you need to implement an implementation of the <em>IoConnector</em> interface.</p>
+<h2 id="ioacceptor">IoAcceptor<a class="headerlink" href="#ioacceptor" title="Permanent link">¶</a></h2>
+<p>Basically, this interface is named because of the <em>accept()</em> method, responsible for the creation of new connections between a client and the server. The server accepts incoming connection requests.</p>
+<p>At some point, we could have named this interface 'Server' (and this is the new name in the coming <strong>MINA 3.0</strong>).</p>
+<p>As we may deal with more than one kind of transport (TCP/UDP/...), we have more than one implementation for this interface. It would be very unlikely that you need to implement a new one.</p>
+<p>We have many of those implementing classes</p>
+<ul>
+<li><strong>NioSocketAcceptor</strong> : the non-blocking Socket transport <em>IoAcceptor</em></li>
+<li><strong>NioDatagramAcceptor</strong> : the non-blocking UDP transport <em>IoAcceptor</em></li>
+<li><strong>AprSocketAcceptor</strong> : the blocking Socket transport <em>IoAcceptor</em>, based on APR</li>
+<li><strong>VmPipeSocketAcceptor</strong> : the in-VM <em>IoAcceptor</em></li>
+</ul>
+<p>Just pick the one that fit your need.</p>
+<p>Here is the class diagram for the <em>IoAcceptor</em> interfaces and classes :</p>
+<p><img alt="" src="../../../staticresources/images/mina/IoServiceAcceptor.png" /></p>
+<h2 id="ioconnector">IoConnector<a class="headerlink" href="#ioconnector" title="Permanent link">¶</a></h2>
+<p>As we have to use an <em>IoAcceptor</em> for servers, you have to implement the <em>IoConnector</em> for clients. Again, we have many implementation classes :</p>
+<ul>
+<li><strong>NioSocketConnector</strong> : the non-blocking Socket transport <em>IoConnector</em></li>
+<li><strong>NioDatagramConnector</strong> : the non-blocking UDP transport <em>IoConnector</em></li>
+<li><strong>AprSocketConnector</strong> : the blocking Socket transport <em>IoConnector</em>, based on APR</li>
+<li><strong>ProxyConnector</strong> : a <em>IoConnector</em> providing proxy support</li>
+<li><strong>SerialConnector</strong> : a <em>IoConnector</em> for a serial transport</li>
+<li><strong>VmPipeConnector</strong> : the in-VM <em>IoConnector</em></li>
+</ul>
+<p>Just pick the one that fit your need.</p>
+<p>Here is the class diagram for the <em>IoConnector</em> interfaces and classes :</p>
+<p><img alt="" src="../../../staticresources/images/mina/IoServiceConnector.png" /></p>
+
+
+ <div class="nav">
+ <div class="nav_prev">
+
+ <a href="ch3.1-io-service.html">3.1 - IoService Introduction</a>
+
+ </div>
+ <div class="nav_up">
+
+ <a href="ch3-service.html">Chapter 3 - Service</a>
+
+ </div>
+ <div class="nav_next">
+
+ <a href="ch3.3-acceptor.html">3.3 - Acceptor</a>
+
+ </div>
+ <div class="clearfix"></div>
+ </div>
+
+
+ </div><!-- rightColumn -->
+ <div id="endContent"></div>
+ </div><!-- content -->
+ <div id="footer">© 2003-2019, <a href="https://www.apache.org">The Apache Software Foundation</a> - <a href="./../../../privacy-policy.html">Privacy Policy</a><br />
+ Apache MINA, MINA, Apache Vysper, Vysper, Apache SSHd, SSHd, Apache FtpServer, FtpServer, Apache AsyncWeb, AsyncWeb,
+ Apache, the Apache feather logo, and the Apache Mina project logos are trademarks of The Apache Software Foundation.
+ </div>
+ </div><!-- container -->
+ <script type="text/javascript">
+
+ var _gaq = _gaq || [];
+ _gaq.push(['_setAccount', 'UA-11074178-1']);
+ _gaq.push(['_trackPageview']);
+
+ (function() {
+ var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+ ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+ var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+ })();
+
+ </script>
+ </body>
+</html>
+
Added: websites/staging/mina/trunk/content/mina-project/userguide/ch3-service/ch3.3-acceptor.html
==============================================================================
--- websites/staging/mina/trunk/content/mina-project/userguide/ch3-service/ch3.3-acceptor.html (added)
+++ websites/staging/mina/trunk/content/mina-project/userguide/ch3-service/ch3.3-acceptor.html Wed Mar 27 05:52:01 2019
@@ -0,0 +1,315 @@
+<!DOCTYPE html>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<html>
+<head>
+ <title>3.3 - Acceptor — Apache MINA</title>
+
+ <link href="./../../../css/common.css" rel="stylesheet" type="text/css">
+ <link href="./../../../css/mina.css" rel="stylesheet" type="text/css">
+
+
+ <link rel="shortcut icon" href="./../../../staticresources/images/mina-icon_16x16.png"/>
+
+</head>
+ <body>
+ <div id="container">
+ <div id="header">
+ <div id="subProjectsNavBar">
+ <a href="./../../../">
+
+ Apache MINA Project
+
+ </a>
+ |
+ <a href="./../../../mina-project/index.html">
+
+ <strong>MINA</strong>
+
+ </a>
+ |
+ <a href="./../../../asyncweb-project/index.html">
+
+ AsyncWeb
+
+ </a>
+ |
+ <a href="./../../../ftpserver-project/index.html">
+
+ FtpServer
+
+ </a>
+ |
+ <a href="./../../../sshd-project/index.html">
+
+ SSHD
+
+ </a>
+ |
+ <a href="./../../../vysper-project/index.html">
+
+ Vysper
+
+ </a>
+ </div><!-- subProjectsNavBar -->
+ </div><!-- header -->
+ <div id="content">
+ <div id="leftColumn">
+
+
+
+
+
+ <style type="text/css">
+/* The following code is added by mdx_elementid.py
+ It was originally lifted from http://subversion.apache.org/style/site.css */
+/*
+ * Hide class="elementid-permalink", except when an enclosing heading
+ * has the :hover property.
+ */
+.headerlink, .elementid-permalink {
+ visibility: hidden;
+}
+h2:hover > .headerlink, h3:hover > .headerlink, h1:hover > .headerlink, h6:hover > .headerlink, h4:hover > .headerlink, h5:hover > .headerlink, dt:hover > .elementid-permalink { visibility: visible }</style>
+<div id="navigation">
+
+ <h5>Latest Downloads</h5>
+ <ul>
+ <li><a href="./../../../mina-project/downloads_2_0.html">Mina 2.0.20</a></li>
+ <li><a href="./../../../mina-project/downloads_2_1.html">Mina 2.1.0</a></li>
+ <li><a href="./../../../mina-project/downloads_old.html">Mina old versions</a></li>
+ </ul>
+ <h5>Documentation</h5>
+ <ul>
+ <li><a href="./../../../mina-project/documentation.html" class="external-link" rel="nofollow">Base documentation</a></li>
+ <li><a href="./../../../mina-project/userguide/user-guide-toc.html" class="external-link" rel="nofollow">User guide</a></li>
+ <li><a href="./../../../mina-project/2.1-vs-2.0.html" class="external-link" rel="nofollow">2.1 vs 2.0</a></li>
+ <li><a href="./../../../mina-project/features.html" class="external-link" rel="nofollow">Features</a></li>
+ <li><a href="./../../../mina-project/road-map.html" class="external-link" rel="nofollow">Road Map</a></li>
+ <li><a href="./../../../mina-project/quick-start-guide.html" class="external-link" rel="nofollow">Quick Start Guide</a></li>
+ <li><a href="./../../../mina-project/faq.html" class="external-link" rel="nofollow">FAQ</a></li>
+ </ul>
+ <h5>Resources</h5>
+ <ul>
+ <li><a href="./../../../mina-project/mailing-lists.html" class="external-link" rel="nofollow">Mailing lists & IRC</a></li>
+ <li><a href="./../../../mina-project/issue-tracking.html" class="external-link" rel="nofollow">Issue tracking</a></li>
+ <li><a href="./../../../mina-project/sources.html" class="external-link" rel="nofollow">Sources</a></li>
+ <li><a href="./../../../mina-project/gen-docs/latest-2.0/apidocs/index.html" class="external-link" rel="nofollow">API Javadoc 2.0.20</a></li>
+ <li><a href="./../../../mina-project/gen-docs/latest-2.1/apidocs/index.html" class="external-link" rel="nofollow">API Javadoc 2.1.0</a></li>
+ <li><a href="./../../../mina-project/gen-docs/latest-2.0/xref/index.html" class="external-link" rel="nofollow">API xref 2.0.20</a></li>
+ <li><a href="./../../../mina-project/gen-docs/latest-2.1/xref/index.html" class="external-link" rel="nofollow">API xref 2.1.0</a></li>
+ <li><a href="./../../../mina-project/performances.html" class="external-link" rel="nofollow">Performances</a></li>
+ <li><a href="./../../../mina-project/testimonials.html" class="external-link" rel="nofollow">Testimonials</a></li>
+ <li><a href="./../../../mina-project/conferences.html" class="external-link" rel="nofollow">Conferences</a></li>
+ <li><a href="./../../../mina-project/developer-guide.html" class="external-link" rel="nofollow">Developers Guide</a></li>
+ <li><a href="./../../../mina-project/related-projects.html" class="external-link" rel="nofollow">Related Projects</a></li>
+ <li><a href="https://people.apache.org/~vgritsenko/stats/projects/mina.html" class="external-link" rel="nofollow">Statistics</a></li>
+ </ul>
+
+
+ <h5>Community</h5>
+ <ul>
+ <li><a href="https://www.apache.org/foundation/contributing.html" class="external-link" rel="nofollow">Contributing</a></li>
+ <li><a href="./../../../contributors.html" class="external-link" rel="nofollow">Team</a></li>
+ <li><a href="./../../../special-thanks.html" class="external-link" rel="nofollow">Special Thanks</a></li>
+ <li><a href="https://www.apache.org/security/" class="external-link" rel="nofollow">Security</a></li>
+ </ul>
+
+
+ <h5>About Apache</h5>
+ <ul>
+ <li><a href="https://www.apache.org" class="external-link" rel="nofollow">Apache main site</a></li>
+ <li><a href="https://www.apache.org/licenses/" class="external-link" rel="nofollow">License</a></li>
+ <li><a href="https://www.apache.org/foundation/sponsorship.html" title="The ASF sponsorship program" class="external-link" rel="nofollow">Sponsorship program</a></li>
+ <li><a href="https://www.apache.org/foundation/thanks.html" class="external-link" rel="nofollow">Thanks</a></li>
+ </ul>
+
+
+ <h3><a name="Navigation-Upcoming"></a>Upcoming</h3>
+ <ul>
+ <li>No event</li>
+ </ul>
+
+</div>
+
+<!-- navigation -->
+
+
+ </div><!-- leftColumn -->
+ <div id="rightColumn">
+
+
+
+ <div class="nav">
+ <div class="nav_prev">
+
+ <a href="ch3.2-io-service-details.html">3.2 - IoService Details</a>
+
+ </div>
+ <div class="nav_up">
+
+ <a href="ch3-service.html">Chapter 3 - Service</a>
+
+ </div>
+ <div class="nav_next">
+
+ <a href="ch3.4-connector.html">3.4 - Connector</a>
+
+ </div>
+ <div class="clearfix"></div>
+ </div>
+
+
+<style type="text/css">
+/* The following code is added by mdx_elementid.py
+ It was originally lifted from http://subversion.apache.org/style/site.css */
+/*
+ * Hide class="elementid-permalink", except when an enclosing heading
+ * has the :hover property.
+ */
+.headerlink, .elementid-permalink {
+ visibility: hidden;
+}
+h2:hover > .headerlink, h3:hover > .headerlink, h1:hover > .headerlink, h6:hover > .headerlink, h4:hover > .headerlink, h5:hover > .headerlink, dt:hover > .elementid-permalink { visibility: visible }</style>
+<h1 id="33-acceptor">3.3 - Acceptor<a class="headerlink" href="#33-acceptor" title="Permanent link">¶</a></h1>
+<p>In order to build a server, you need to select an implementation of the <em>IoAcceptor</em> interface.</p>
+<h2 id="ioacceptor">IoAcceptor<a class="headerlink" href="#ioacceptor" title="Permanent link">¶</a></h2>
+<p>Basically, this interface is named because of the <em>accept()</em> method, responsible for the creation of new connection between a client and the server. The server accepts incoming connection request.</p>
+<p>At some point, we could have named this interface 'Server'.</p>
+<p>As we may deal with more than one kind of transport (TCP/UDP/...), we have more than one implementation for this interface. It would be very unlikely that you need to implement a new one.</p>
+<p>We have many of those implementing classes</p>
+<ul>
+<li><strong>NioSocketAcceptor</strong> : the non-blocking Socket transport <em>IoAcceptor</em></li>
+<li><strong>NioDatagramAcceptor</strong> : the non-blocking UDP transport <em>IoAcceptor</em></li>
+<li><strong>AprSocketAcceptor</strong> : the blocking Socket transport <em>IoAcceptor</em>, based on APR</li>
+<li><strong>VmPipeSocketAcceptor</strong> : the in-VM <em>IoAcceptor</em></li>
+</ul>
+<p>Just pick the one that fit your need.</p>
+<p>Here is the class diagram for the <em>IoAcceptor</em> interfaces and classes :</p>
+<p><img alt="" src="../../../staticresources/images/mina/IoServiceAcceptor.png" /></p>
+<h2 id="creation">Creation<a class="headerlink" href="#creation" title="Permanent link">¶</a></h2>
+<p>You first have to select the type of <em>IoAcceptor</em> you want to instanciate. This is a choice you will made early in the process, as it all boils down to which network protocol you will use. Let's see with an example how it works :</p>
+<div class="codehilite"><pre><span class="kd">public</span> <span class="nf">TcpServer</span><span class="o">()</span> <span class="kd">throws</span> <span class="n">IOException</span> <span class="o">{</span>
+ <span class="c1">// Create a TCP acceptor</span>
+ <span class="n">IoAcceptor</span> <span class="n">acceptor</span> <span class="o">=</span> <span class="k">new</span> <span class="n">NioSocketAcceptor</span><span class="o">();</span>
+
+ <span class="c1">// Associate the acceptor to an IoHandler instance (your application)</span>
+ <span class="n">acceptor</span><span class="o">.</span><span class="na">setHandler</span><span class="o">(</span><span class="k">this</span><span class="o">);</span>
+
+ <span class="c1">// Bind : this will start the server...</span>
+ <span class="n">acceptor</span><span class="o">.</span><span class="na">bind</span><span class="o">(</span><span class="k">new</span> <span class="n">InetSocketAddress</span><span class="o">(</span><span class="n">PORT</span><span class="o">));</span>
+
+ <span class="n">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="s">"Server started..."</span><span class="o">);</span>
+<span class="o">}</span>
+</pre></div>
+
+
+<p>That's it ! You have created a TCP server. If you want to start an UDP server, simply replace the first line of code :</p>
+<div class="codehilite"><pre><span class="o">...</span>
+<span class="c1">// Create an UDP acceptor</span>
+<span class="n">IoAcceptor</span> <span class="n">acceptor</span> <span class="o">=</span> <span class="k">new</span> <span class="n">NioDatagramAcceptor</span><span class="o">();</span>
+<span class="o">...</span>
+</pre></div>
+
+
+<h2 id="disposal">Disposal<a class="headerlink" href="#disposal" title="Permanent link">¶</a></h2>
+<p>The service can be stopped by calling the <em>dispose()</em> method. The service will be stopped only when all the pending sessions have been processed :</p>
+<div class="codehilite"><pre><span class="c1">// Stop the service, waiting for the pending sessions to be inactive</span>
+<span class="n">acceptor</span><span class="o">.</span><span class="na">dispose</span><span class="o">();</span>
+</pre></div>
+
+
+<p>You can also wait for every thread being executed to be properly completed by passing a boolean parameter to this method :</p>
+<div class="codehilite"><pre><span class="c1">// Stop the service, waiting for the processing session to be properly completed</span>
+<span class="n">acceptor</span><span class="o">.</span><span class="na">dispose</span><span class="o">(</span> <span class="kc">true</span> <span class="o">);</span>
+</pre></div>
+
+
+<h2 id="status">Status<a class="headerlink" href="#status" title="Permanent link">¶</a></h2>
+<p>You can get the <em>IoService</em> status by calling one of the following methods :</p>
+<ul>
+<li><em>isActive()</em> : true if the service can accept incoming requests</li>
+<li><em>isDisposing()</em> : true if the <em>dispose()</em> method has been called. It does not tell if the service is actually stopped (some sessions might be processed)</li>
+<li><em>isDisposed()</em> : true if the <em>dispose(boolean)</em> method has been called, and the executing threads have been completed.</li>
+</ul>
+<h2 id="managing-the-iohandler">Managing the IoHandler<a class="headerlink" href="#managing-the-iohandler" title="Permanent link">¶</a></h2>
+<p>You can add or get the associated <em>IoHandler</em> when the service has been instanciated. Youjust have to call the <em>setHandler(IoHandler)</em> or <em>getHandler()</em> methods.</p>
+<h2 id="managing-the-filters-chain">Managing the Filters chain<a class="headerlink" href="#managing-the-filters-chain" title="Permanent link">¶</a></h2>
+<p>if you want to manage the filters chain, you will have to call the <em>getFilterChain()</em> method. Here is an example :</p>
+<div class="codehilite"><pre><span class="c1">// Add a logger filter</span>
+<span class="n">DefaultIoFilterChainBuilder</span> <span class="n">chain</span> <span class="o">=</span> <span class="n">acceptor</span><span class="o">.</span><span class="na">getFilterChain</span><span class="o">();</span>
+<span class="n">chain</span><span class="o">.</span><span class="na">addLast</span><span class="o">(</span><span class="s">"logger"</span><span class="o">,</span> <span class="k">new</span> <span class="n">LoggingFilter</span><span class="o">());</span>
+</pre></div>
+
+
+<p>You can also create the chain before and set it into the service :</p>
+<div class="codehilite"><pre><span class="c1">// Add a logger filter</span>
+<span class="n">DefaultIoFilterChainBuilder</span> <span class="n">chain</span> <span class="o">=</span> <span class="k">new</span> <span class="n">DefaultIoFilterChainBuilder</span><span class="o">();</span>
+<span class="n">chain</span><span class="o">.</span><span class="na">addLast</span><span class="o">(</span><span class="s">"logger"</span><span class="o">,</span> <span class="k">new</span> <span class="n">LoggingFilter</span><span class="o">());</span>
+
+<span class="c1">// And inject the created chain builder in the service</span>
+<span class="n">acceptor</span><span class="o">.</span><span class="na">setFilterChainBuilder</span><span class="o">(</span><span class="n">chain</span><span class="o">);</span>
+</pre></div>
+
+
+<h2 id="_1"><a class="headerlink" href="#_1" title="Permanent link">¶</a></h2>
+
+
+ <div class="nav">
+ <div class="nav_prev">
+
+ <a href="ch3.2-io-service-details.html">3.2 - IoService Details</a>
+
+ </div>
+ <div class="nav_up">
+
+ <a href="ch3-service.html">Chapter 3 - Service</a>
+
+ </div>
+ <div class="nav_next">
+
+ <a href="ch3.4-connector.html">3.4 - Connector</a>
+
+ </div>
+ <div class="clearfix"></div>
+ </div>
+
+
+ </div><!-- rightColumn -->
+ <div id="endContent"></div>
+ </div><!-- content -->
+ <div id="footer">© 2003-2019, <a href="https://www.apache.org">The Apache Software Foundation</a> - <a href="./../../../privacy-policy.html">Privacy Policy</a><br />
+ Apache MINA, MINA, Apache Vysper, Vysper, Apache SSHd, SSHd, Apache FtpServer, FtpServer, Apache AsyncWeb, AsyncWeb,
+ Apache, the Apache feather logo, and the Apache Mina project logos are trademarks of The Apache Software Foundation.
+ </div>
+ </div><!-- container -->
+ <script type="text/javascript">
+
+ var _gaq = _gaq || [];
+ _gaq.push(['_setAccount', 'UA-11074178-1']);
+ _gaq.push(['_trackPageview']);
+
+ (function() {
+ var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+ ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+ var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+ })();
+
+ </script>
+ </body>
+</html>
+
Added: websites/staging/mina/trunk/content/mina-project/userguide/ch3-service/ch3.4-connector.html
==============================================================================
--- websites/staging/mina/trunk/content/mina-project/userguide/ch3-service/ch3.4-connector.html (added)
+++ websites/staging/mina/trunk/content/mina-project/userguide/ch3-service/ch3.4-connector.html Wed Mar 27 05:52:01 2019
@@ -0,0 +1,248 @@
+<!DOCTYPE html>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<html>
+<head>
+ <title>3.4 - Connector — Apache MINA</title>
+
+ <link href="./../../../css/common.css" rel="stylesheet" type="text/css">
+ <link href="./../../../css/mina.css" rel="stylesheet" type="text/css">
+
+
+ <link rel="shortcut icon" href="./../../../staticresources/images/mina-icon_16x16.png"/>
+
+</head>
+ <body>
+ <div id="container">
+ <div id="header">
+ <div id="subProjectsNavBar">
+ <a href="./../../../">
+
+ Apache MINA Project
+
+ </a>
+ |
+ <a href="./../../../mina-project/index.html">
+
+ <strong>MINA</strong>
+
+ </a>
+ |
+ <a href="./../../../asyncweb-project/index.html">
+
+ AsyncWeb
+
+ </a>
+ |
+ <a href="./../../../ftpserver-project/index.html">
+
+ FtpServer
+
+ </a>
+ |
+ <a href="./../../../sshd-project/index.html">
+
+ SSHD
+
+ </a>
+ |
+ <a href="./../../../vysper-project/index.html">
+
+ Vysper
+
+ </a>
+ </div><!-- subProjectsNavBar -->
+ </div><!-- header -->
+ <div id="content">
+ <div id="leftColumn">
+
+
+
+
+
+ <style type="text/css">
+/* The following code is added by mdx_elementid.py
+ It was originally lifted from http://subversion.apache.org/style/site.css */
+/*
+ * Hide class="elementid-permalink", except when an enclosing heading
+ * has the :hover property.
+ */
+.headerlink, .elementid-permalink {
+ visibility: hidden;
+}
+h2:hover > .headerlink, h3:hover > .headerlink, h1:hover > .headerlink, h6:hover > .headerlink, h4:hover > .headerlink, h5:hover > .headerlink, dt:hover > .elementid-permalink { visibility: visible }</style>
+<div id="navigation">
+
+ <h5>Latest Downloads</h5>
+ <ul>
+ <li><a href="./../../../mina-project/downloads_2_0.html">Mina 2.0.20</a></li>
+ <li><a href="./../../../mina-project/downloads_2_1.html">Mina 2.1.0</a></li>
+ <li><a href="./../../../mina-project/downloads_old.html">Mina old versions</a></li>
+ </ul>
+ <h5>Documentation</h5>
+ <ul>
+ <li><a href="./../../../mina-project/documentation.html" class="external-link" rel="nofollow">Base documentation</a></li>
+ <li><a href="./../../../mina-project/userguide/user-guide-toc.html" class="external-link" rel="nofollow">User guide</a></li>
+ <li><a href="./../../../mina-project/2.1-vs-2.0.html" class="external-link" rel="nofollow">2.1 vs 2.0</a></li>
+ <li><a href="./../../../mina-project/features.html" class="external-link" rel="nofollow">Features</a></li>
+ <li><a href="./../../../mina-project/road-map.html" class="external-link" rel="nofollow">Road Map</a></li>
+ <li><a href="./../../../mina-project/quick-start-guide.html" class="external-link" rel="nofollow">Quick Start Guide</a></li>
+ <li><a href="./../../../mina-project/faq.html" class="external-link" rel="nofollow">FAQ</a></li>
+ </ul>
+ <h5>Resources</h5>
+ <ul>
+ <li><a href="./../../../mina-project/mailing-lists.html" class="external-link" rel="nofollow">Mailing lists & IRC</a></li>
+ <li><a href="./../../../mina-project/issue-tracking.html" class="external-link" rel="nofollow">Issue tracking</a></li>
+ <li><a href="./../../../mina-project/sources.html" class="external-link" rel="nofollow">Sources</a></li>
+ <li><a href="./../../../mina-project/gen-docs/latest-2.0/apidocs/index.html" class="external-link" rel="nofollow">API Javadoc 2.0.20</a></li>
+ <li><a href="./../../../mina-project/gen-docs/latest-2.1/apidocs/index.html" class="external-link" rel="nofollow">API Javadoc 2.1.0</a></li>
+ <li><a href="./../../../mina-project/gen-docs/latest-2.0/xref/index.html" class="external-link" rel="nofollow">API xref 2.0.20</a></li>
+ <li><a href="./../../../mina-project/gen-docs/latest-2.1/xref/index.html" class="external-link" rel="nofollow">API xref 2.1.0</a></li>
+ <li><a href="./../../../mina-project/performances.html" class="external-link" rel="nofollow">Performances</a></li>
+ <li><a href="./../../../mina-project/testimonials.html" class="external-link" rel="nofollow">Testimonials</a></li>
+ <li><a href="./../../../mina-project/conferences.html" class="external-link" rel="nofollow">Conferences</a></li>
+ <li><a href="./../../../mina-project/developer-guide.html" class="external-link" rel="nofollow">Developers Guide</a></li>
+ <li><a href="./../../../mina-project/related-projects.html" class="external-link" rel="nofollow">Related Projects</a></li>
+ <li><a href="https://people.apache.org/~vgritsenko/stats/projects/mina.html" class="external-link" rel="nofollow">Statistics</a></li>
+ </ul>
+
+
+ <h5>Community</h5>
+ <ul>
+ <li><a href="https://www.apache.org/foundation/contributing.html" class="external-link" rel="nofollow">Contributing</a></li>
+ <li><a href="./../../../contributors.html" class="external-link" rel="nofollow">Team</a></li>
+ <li><a href="./../../../special-thanks.html" class="external-link" rel="nofollow">Special Thanks</a></li>
+ <li><a href="https://www.apache.org/security/" class="external-link" rel="nofollow">Security</a></li>
+ </ul>
+
+
+ <h5>About Apache</h5>
+ <ul>
+ <li><a href="https://www.apache.org" class="external-link" rel="nofollow">Apache main site</a></li>
+ <li><a href="https://www.apache.org/licenses/" class="external-link" rel="nofollow">License</a></li>
+ <li><a href="https://www.apache.org/foundation/sponsorship.html" title="The ASF sponsorship program" class="external-link" rel="nofollow">Sponsorship program</a></li>
+ <li><a href="https://www.apache.org/foundation/thanks.html" class="external-link" rel="nofollow">Thanks</a></li>
+ </ul>
+
+
+ <h3><a name="Navigation-Upcoming"></a>Upcoming</h3>
+ <ul>
+ <li>No event</li>
+ </ul>
+
+</div>
+
+<!-- navigation -->
+
+
+ </div><!-- leftColumn -->
+ <div id="rightColumn">
+
+
+
+ <div class="nav">
+ <div class="nav_prev">
+
+ <a href="ch3.3-acceptor.html">3.3 - Acceptor</a>
+
+ </div>
+ <div class="nav_up">
+
+ <a href="ch3-service.html">Chapter 3 - Service</a>
+
+ </div>
+ <div class="nav_next">
+
+ <a href="../ch4-session/ch4-session.html">Chapter 4 - Session</a>
+
+ </div>
+ <div class="clearfix"></div>
+ </div>
+
+
+<style type="text/css">
+/* The following code is added by mdx_elementid.py
+ It was originally lifted from http://subversion.apache.org/style/site.css */
+/*
+ * Hide class="elementid-permalink", except when an enclosing heading
+ * has the :hover property.
+ */
+.headerlink, .elementid-permalink {
+ visibility: hidden;
+}
+h2:hover > .headerlink, h3:hover > .headerlink, h1:hover > .headerlink, h6:hover > .headerlink, h4:hover > .headerlink, h5:hover > .headerlink, dt:hover > .elementid-permalink { visibility: visible }</style>
+<h1 id="34-connector">3.4 - Connector<a class="headerlink" href="#34-connector" title="Permanent link">¶</a></h1>
+<p>For client applications, you need to implement an implementation of the IoConnector interface.</p>
+<h2 id="ioconnector">IoConnector<a class="headerlink" href="#ioconnector" title="Permanent link">¶</a></h2>
+<p>As we have to use an IoAcceptor for servers, you have to implement the IoConnector. Again, we have many implementation classes :</p>
+<ul>
+<li><strong>NioSocketConnector</strong> : the non-blocking Socket transport Connector</li>
+<li><strong>NioDatagramConnector</strong> : the non-blocking UDP transport * Connector*</li>
+<li><strong>AprSocketConnector</strong> : the blocking Socket transport * Connector*, based on APR</li>
+<li><strong>ProxyConnector</strong> : a Connector providing proxy support</li>
+<li><strong>SerialConnector</strong> : a Connector for a serial transport</li>
+<li><strong>VmPipeConnector</strong> : the in-VM * Connector*</li>
+</ul>
+<p>Just pick the one that fit your need.</p>
+<p>Here is the class diagram for the IoConnector interfaces and classes :</p>
+<p><img alt="" src="../../../staticresources/images/mina/IoServiceConnector.png" /></p>
+
+
+ <div class="nav">
+ <div class="nav_prev">
+
+ <a href="ch3.3-acceptor.html">3.3 - Acceptor</a>
+
+ </div>
+ <div class="nav_up">
+
+ <a href="ch3-service.html">Chapter 3 - Service</a>
+
+ </div>
+ <div class="nav_next">
+
+ <a href="../ch4-session/ch4-session.html">Chapter 4 - Session</a>
+
+ </div>
+ <div class="clearfix"></div>
+ </div>
+
+
+ </div><!-- rightColumn -->
+ <div id="endContent"></div>
+ </div><!-- content -->
+ <div id="footer">© 2003-2019, <a href="https://www.apache.org">The Apache Software Foundation</a> - <a href="./../../../privacy-policy.html">Privacy Policy</a><br />
+ Apache MINA, MINA, Apache Vysper, Vysper, Apache SSHd, SSHd, Apache FtpServer, FtpServer, Apache AsyncWeb, AsyncWeb,
+ Apache, the Apache feather logo, and the Apache Mina project logos are trademarks of The Apache Software Foundation.
+ </div>
+ </div><!-- container -->
+ <script type="text/javascript">
+
+ var _gaq = _gaq || [];
+ _gaq.push(['_setAccount', 'UA-11074178-1']);
+ _gaq.push(['_trackPageview']);
+
+ (function() {
+ var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+ ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+ var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+ })();
+
+ </script>
+ </body>
+</html>
+