1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.newsclub.net.unix.demo.mina;
19
20 import java.io.File;
21 import java.io.IOException;
22 import java.nio.charset.StandardCharsets;
23
24 import org.apache.mina.core.service.IoAcceptor;
25 import org.apache.mina.core.session.IdleStatus;
26 import org.apache.mina.filter.codec.ProtocolCodecFilter;
27 import org.apache.mina.filter.codec.textline.TextLineCodecFactory;
28 import org.apache.mina.filter.logging.LoggingFilter;
29 import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
30 import org.newsclub.net.unix.AFUNIXSelectorProvider;
31 import org.newsclub.net.unix.AFUNIXSocketAddress;
32
33
34
35
36
37
38
39
40 public class MinaTimeServer {
41 public static void main(String[] args) throws IOException {
42 int processorCount = Runtime.getRuntime().availableProcessors() + 1;
43
44
45 IoAcceptor acceptor = new NioSocketAcceptor(processorCount, AFUNIXSelectorProvider.provider());
46
47
48
49 acceptor.getFilterChain().addLast("logger", new LoggingFilter());
50 acceptor.getFilterChain().addLast("codec", new ProtocolCodecFilter(new TextLineCodecFactory(
51 StandardCharsets.UTF_8)));
52 acceptor.setHandler(new TimeServerHandler());
53 acceptor.getSessionConfig().setReadBufferSize(2048);
54 acceptor.getSessionConfig().setIdleTime(IdleStatus.BOTH_IDLE, 10);
55
56
57 AFUNIXSocketAddress addr = AFUNIXSocketAddress.of(new File("/tmp/minatime"));
58 acceptor.bind(addr);
59
60 System.out.println("Bound to " + addr);
61 }
62 }