AbstractClientFactory.java
1.13 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package com.example.mina.client.base;
import lombok.extern.slf4j.Slf4j;
import org.apache.mina.core.filterchain.IoFilterChain;
import org.apache.mina.filter.codec.ProtocolCodecFilter;
@Slf4j
public abstract class AbstractClientFactory {
protected MatrixDataProxy matrixDataProxy;
public void setMatrixDataProxy(MatrixDataProxy matrixDataProxy) {
this.matrixDataProxy = matrixDataProxy;
}
abstract public AbstractMatrixIoHandler getClientHandler();
public void buildFilterChain(IoFilterChain ioFilterChain){
ioFilterChain.addLast("codec", new ProtocolCodecFilter(new ByteProtocolFactory()));
}
public MatrixClient createClient(MatrixConnectConfig connectConfig){
try{
MatrixClient client = new MatrixClient(connectConfig);
client.setClientHandler(getClientHandler());
//TODO initiate the client
buildFilterChain(client.getFilterChain());
return client;
}catch (Exception e) {
log.error("Can not create the client, error: ", e);
throw new RuntimeException("create client error!");
}
}
}