1
2
3
4 package org.neo.swarm.interceptor.tcp;
5
6 import java.io.Serializable;
7 import java.net.InetAddress;
8
9 import org.neo.swarm.core.aop.Aspect;
10 import org.neo.swarm.core.aop.AspectComponent;
11 import org.neo.swarm.core.aop.silc.comp.MethodInterceptor;
12 import org.neo.swarm.core.aop.silc.comp.Perspective;
13 import org.neo.swarm.core.aop.silc.comp.Pointcut;
14 import org.neo.swarm.core.aop.silc.comp.RegexPointCut;
15 import org.neo.swarm.util.network.tcp.client.TcpSenderFactoryI;
16 import org.neo.swarm.util.serialize.Serializer;
17
18 /***
19 * ClientSide that uses a TCP sender to pass messages off to the server. This
20 * represents the last part of a remote-serializable interceptor stack.
21 *
22 * @author neil.avery
23 */
24 public class TcpClient implements Serializable, Aspect {
25
26 Pointcut pointcut = new RegexPointCut(".*");
27 MethodInterceptor interceptor;
28
29 public TcpClient(InetAddress host, int port, TcpSenderFactoryI tcpFactory, Serializer serializer) {
30 this.interceptor = new TcpClientInterceptor( host, port, tcpFactory, serializer);
31 }
32
33 public void advise(AspectComponent componentInstance) {
34 pointcut.advise(Perspective.REMOTE, componentInstance, interceptor);
35 }
36
37 public MethodInterceptor getInterceptor() {
38 return interceptor;
39 }
40
41 public void replaceInterceptor(MethodInterceptor interceptor) {
42 this.interceptor = interceptor;
43 }
44 }