AbstractClientFactory.java
1.18 KB
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) throws Exception{
ioFilterChain.addLast("codec", new ProtocolCodecFilter(new ByteProtocolFactory()));
}
public MatrixClient createClient(MatrixConnectConfig connectConfig){
try{
MatrixClient client = new MatrixClient(connectConfig);
client.setClientHandler(getClientHandler());
client.setMatrixDataProxy(matrixDataProxy);
client.connect();
buildFilterChain(client.getFilterChain());
return client;
}catch (Exception e) {
log.error("Can not create the client, error: ", e);
throw new RuntimeException("create client error!");
}
}
}