1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package fulmine.rpc.events;
17
18 import java.util.Arrays;
19
20 import fulmine.event.IEventManager;
21 import fulmine.event.system.AbstractSystemEvent;
22 import fulmine.model.field.IField;
23 import fulmine.model.field.StringField;
24 import fulmine.rpc.IRpcCodec;
25 import fulmine.rpc.IRpcDefinition;
26 import fulmine.rpc.IRpcMarker;
27 import fulmine.rpc.IRpcRegistry;
28 import fulmine.rpc.RpcCodec;
29 import fulmine.rpc.RpcDefinition;
30 import fulmine.util.reference.QuadValue;
31
32
33
34
35
36
37
38
39
40
41
42
43 public final class RpcInvokeEvent extends AbstractSystemEvent
44 {
45 private static final String NOT_DECODED_YET = "Not decoded yet";
46
47 private static final IField[] IFIELD =
48 new IField[] { new StringField("args", NOT_DECODED_YET) };
49
50
51 private final byte[] rpcData;
52
53
54 private String remoteContextIdentity;
55
56
57 private String rpcKey = NOT_DECODED_YET;
58
59
60 private IField[] arguments = IFIELD;
61
62
63 private IRpcMarker marker;
64
65
66
67
68
69
70
71
72
73
74 public RpcInvokeEvent(IEventManager context, byte[] rpcData)
75 {
76 super(context);
77 this.rpcData = rpcData;
78 }
79
80
81
82
83
84
85
86
87 public void decode(IRpcRegistry registry)
88 {
89 IRpcCodec codec = new RpcCodec(registry);
90 final QuadValue<IRpcMarker, String, String, IField[]> decodedData =
91 codec.decode(this.rpcData);
92 this.marker = decodedData.getFirst();
93 this.rpcKey = decodedData.getSecond();
94 this.remoteContextIdentity = decodedData.getThird();
95 this.arguments = decodedData.getFourth();
96 }
97
98
99
100
101
102
103 public String getRemoteContextIdentity()
104 {
105 return this.remoteContextIdentity;
106 }
107
108
109
110
111
112
113
114
115 public String getRpcKey()
116 {
117 return this.rpcKey;
118 }
119
120
121
122
123
124
125 public IField[] getArguments()
126 {
127 return this.arguments;
128 }
129
130
131
132
133
134
135
136 public IRpcMarker getMarker()
137 {
138 return this.marker;
139 }
140
141 @Override
142 protected String getAdditionalToString()
143 {
144 return "" + getMarker() + ", rpcKey=" + getRpcKey()
145 + ", remoteContext=" + getRemoteContextIdentity() + " args="
146 + Arrays.deepToString(getArguments());
147 }
148 }