1 package net.sourceforge.rpgee.messaging.network;
2
3 import net.sourceforge.rpgee.Duplicatable;
4 import net.sourceforge.rpgee.messaging.RpgMessage;
5 import net.sourceforge.rpgee.messaging.exceptions.RpgMessageException;
6
7 public class NetworkMessage<T> implements RpgMessage<T> {
8 /**
9 *
10 */
11 private static final long serialVersionUID = -7961753816738326794L;
12 private boolean finishedProcessing = false;
13 private Cookie cookie;
14 private T message;
15
16 public NetworkMessage(T _msg, Cookie _c) {
17 message = _msg;
18 cookie = _c;
19 }
20
21 public T getMessage() throws RpgMessageException {
22 return message;
23 }
24
25 public boolean isValidMessage() {
26 return false;
27 }
28
29 @SuppressWarnings("unchecked")
30 public NetworkMessage<T> duplicate() {
31 if (Duplicatable.class.isAssignableFrom(message.getClass())) {
32 Duplicatable d = (Duplicatable) message;
33 T duplicate = (T) d.duplicate();
34 return new NetworkMessage<T>(duplicate, cookie);
35 }
36
37 return null;
38 }
39
40 public boolean isFinishedProcessing() {
41 return finishedProcessing;
42 }
43
44 public void setFinishedProcessing() {
45 finishedProcessing = true;
46 }
47
48 }