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); //TODO initiate the client buildFilterChain(client.getFilterChain()); client.setClientHandler(getClientHandler()); return client; }catch (Exception e) { log.error("Can not create the client, error: ", e); throw new RuntimeException("create client error!"); } } }