IoService所处的结构示意可以从应用架构中查看。基本类支持所有IO服务操作,无论是服务端还是客户端。它将处理所有与应用程序的交互、与远程对等、发送和接收消息,管理session会话、连接等。
它是一个提供服务端实现IoAcceptor和客户端实现IOConnector的股票量化交易软件,接口。在以下的章节,我们将分析这些股票量化交易软件,接口。
在Mina中IoService提供了基本的IO服务以及管理IOsession会话,它是Mina架构中的重要组成部分之IoService股票量化交易软件,接口及其子股票量化交易软件,接口的实现类,大多数是低水平的I/O处理操作。
让我们来看看IoService负责哪些功能,及AbstractIoService的实现类。让我们采取一种稍微不同的方式首先使用思维导,然后跳进其内部工作。思维导是通过XMind创建的。
负责功能
如前面的像所示,IoService具有多种负责功能。
·sessions管理:创建和删除sessions,侦查空闲sessions.·filterchain管理:处理过滤器链,允许用户改变过滤器链·handler调用:当接收到新的消息时调用处理·统计管理:更新消息的发送数量如:,bytes和其他类型·监听器管理:以超级用户身份管理监听器·通信管理:处理两端的数据传输
所有这些方面都会在接下来的章节中讲到。
股票量化交易软件,接口详情
IoService是一个为IoConnector和IoAcceptor提供IO服务和session会话管理的基本股票量化交易软件,接口。股票量化交易软件,接口的相关的所有功能需要执行I/O操作,让我们深入一点来了解股票量化交易软件,接口的一系列方法:
·getTransportMetadata()·addListener()·removeListener()·isDisposing()·isDisposed()·dispose()·getHandler()·setHandler()·getManagedSessions()·getManagedSessionCount()·getSessionConfig()·getFilterChainBuilder()·setFilterChainBuilder()·getFilterChain()·isActive()·getActivationTime()·broadcast()·setSessionDataStructureFactory()·getScheduledWriteBytes()·getScheduledWriteMessages()·getStatistics()
该方法返回IoAcceptor或IoConnector正在运行传输的元数据。典型的详情包括供应商名称(nio,apr,rxtx),连接类型(无连接/面向连接的)等。
允许添加IoServiceListener监听IoService相关的特定事件。
允许删除IoService指定IoServiceListener附加。
这个方法用于辨别如果服务当前正在处理,可能需要一段时间,它是了解服务的当前状态很有用的方法。
这个方法用于辨别如果服务已经被处理,服务将被视为处理,只有当所有已分配的资源都被释放了。
这个方法会释放所有资源分配的服务。因为它可能需要一段时间,用户应该检查服务状态使用isDisposing()和isDisposed()知道服务是现在处理完全。
返回服务关联的IoHandler。
设置的IoHandler将负责处理所有的事件服务。处理程序包含应用程序逻辑!
返回目前由该服务管理的所有session会话的Map对象。一个被管理的session会话添加到服务监听。它将用于处理闲置会话,会话和其他方面,根据听众的一个用户添加到服务。
返回所有目前由该服务管理session会话的数量。
返回session配置。
返回过滤器链构建器。如果想添加一些新的过滤器注入时,将创建session会话,这是有用的。
通过服务定义过滤器链构造器。
返回服务默认的过滤器链。
辨别服务是否活跃。
返回时间当这个服务被激活时。如果服务不再活跃,它返回最后一次当这个服务被激活的时间。
写消息给所有的session会话管理。
设置IoSessionDataStructureFactory提供相关数据结构创建一个新会话为这项服务。
返回将写入的字节数(即字节存储在内存等待插座准备写)。
返回的消息数量将书面(即消息存储在内存中等待插座准备写)。
为这个服务返回IoServiceStatistics对象。
IoService是Mina中两个最重要的实现类的股票量化交易软件,接口:
为了建立一个服务器,你需要选择IoAcceptor股票量化交易软件,接口的一个实现。对于客户端应用程序,您需要实现IoConnector股票量化交易软件,接口的一个实现。
基本上,这个股票量化交易软件,接口命名是因为accept()方法,负责创建新的客户端和服务器之间的连接。服务器接受传入的连接请求。在某种程度上,我们可以叫这个股票量化交易软件,接口的服务器(这是在未来Mina0的新名称)。我们可能处理超过一种运输(TCP/UDP/…),我们有不止一个实现这个股票量化交易软件,接口。很可能你需要实现一个新的。
我们有很多的实现类:
·NioSocketAcceptor:thenon-blockingSockettransportIoAcceptor·NioDatagramAcceptor:thenon-blockingUDPtransportIoAcceptor·AprSocketAcceptor:theblockingSockettransportIoAcceptor,basedonAPR·VmPipeSocketAcceptor:thein-VMIoAcceptor
只选择需要一个适合您的。这是IoAcceptor股票量化交易软件,接口和类的类:
作为服务器,我们必须使用一个IoAcceptor你必须为客户端实现IoConnector。同样,我们有很多实现类:
·NioSocketConnector:thenon-blockingSockettransportIoConnector·NioDatagramConnector:thenon-blockingUDPtransportIoConnector·AprSocketConnector:theblockingSockettransportIoConnector,basedonAPR·ProxyConnector:aIoConnectorprovidingproxysupport·SerialConnector:aIoConnectorforaserialtransport·VmPipeConnector:thein-VMIoConnector
只选择需要一个适合您的。这是IoConnector股票量化交易软件,接口和类的类:
为了建立一个服务器,你需要选择IoAcceptor股票量化交易软件,接口的一个实现。
如上:IoService详情>IoAcceptor所述。
创建
你首先要选择你想实例化的IoAcceptor类型。这是一个早于你做出处理之前的选择,它都可以归结为您将使用的网络协议。让我们看看它是如何工作的一个例子:
public TcpServer() throws IOException {
// Create a TCP acceptor
IoAcceptor acceptor = new NioSocketAcceptor();
// Associate the acceptor to an IoHandler instance (your application)
acceptor.setHandler(this);
// Bind : this will start the server...
acceptor.bind(new InetSocketAddress(PORT));
System.out.println('Server started...');
}
就是这样!您已经创建了一个TCP服务器。如果你想开始一个UDP服务器,只需替换的第一行代码:
...// Create an UDP acceptor
IoAcceptor acceptor = new NioDatagramAcceptor();...
废弃处理
服务可以通过调用dispose()方法停止。服务将不再只有当所有的等待会话处理:
// Stop the service, waiting for the pending sessions to be inactive
acceptor.dispose();
你也可以等待每个线程正在执行正确完成一个布尔参数传递给这个方法:
// Stop the service, waiting for the processing session to be properly completed
acceptor.dispose( true );
服务状态
你可以通过调用以下方法之一得到IoService状态:
·isActive():trueiftheservicecanacceptincomingrequests·isDisposing():trueifthedispose()methodhasbeencalleItdoesnottelliftheserviceisactuallystopped(somesessionsmightbeprocesse·isDisposed():trueifthedispose(booleamethodhasbeencalled,andtheexecutingthreadshavebeencomplete
您可以添加或获得相关IoHandler实例化服务。你必须调用setHandler(IoHandler)或getHandler()方法。
管理过滤器链
如果你想管理过滤器链,你需要调用getFilterChain()方法。这里有一个例子:
// Add a logger filter
DefaultIoFilterChainBuilder chain = acceptor.getFilterChain();
chain.addLast('logger', new LoggingFilter());
您还可以创建过滤器链在设置到到服务之前:
// Add a logger filter
DefaultIoFilterChainBuilder chain = new DefaultIoFilterChainBuilder();
chain.addLast('logger', new LoggingFilter());
// And inject the created chain builder in the service
acceptor.setFilterChainBuilder(chain);
对于客户端应用程序,您需要编写IoConnector股票量化交易软件,接口的一个实现。
如上:IoService详情>IoConnector所述。
文章为作者独立观点,不代表 股票程序化软件自动交易接口观点