View Javadoc
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          // @TODO Do we throw a runtime exception here or is there a way to force all Ts to be duplicatable?
37          return null;
38      }
39  
40      public boolean isFinishedProcessing() {
41          return finishedProcessing;
42      }
43  
44      public void setFinishedProcessing() {
45          finishedProcessing = true;
46      }
47  
48  }