1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 package org.fosstrak.llrp.adaptor;
23
24 import java.rmi.RemoteException;
25 import java.rmi.StubNotFoundException;
26 import java.rmi.server.UnicastRemoteObject;
27
28 import org.fosstrak.llrp.adaptor.exception.LLRPRuntimeException;
29 import org.fosstrak.llrp.client.LLRPExceptionHandlerTypeMap;
30 import org.llrp.ltk.exceptions.InvalidLLRPMessageException;
31 import org.llrp.ltk.generated.LLRPMessageFactory;
32 import org.llrp.ltk.types.LLRPMessage;
33
34
35
36
37
38
39 public class AdaptorCallback extends UnicastRemoteObject implements AsynchronousNotifiable {
40
41
42
43
44 private static final long serialVersionUID = 1L;
45
46
47 private AdaptorWorker worker = null;
48
49
50
51
52
53
54 public AdaptorCallback(boolean remote) throws RemoteException {
55 if (remote) {
56 try {
57 UnicastRemoteObject.exportObject(this);
58 } catch (StubNotFoundException e) {
59
60
61
62
63 System.out.println("ignoring exception as with java > 5 ok.");
64 } catch (RemoteException e) {
65 e.printStackTrace();
66 }
67 }
68 }
69
70
71
72
73
74 public void notify(byte[] message, String readerName) throws RemoteException {
75 try {
76
77 LLRPMessage llrpMessage = LLRPMessageFactory.createLLRPMessage(message);
78
79
80 AdaptorManagement.getInstance().dispatchHandlers(
81 worker.getAdaptor().getAdaptorName(), readerName, llrpMessage);
82
83 } catch (InvalidLLRPMessageException e) {
84 AdaptorManagement.getInstance().postException(new LLRPRuntimeException(e.getMessage()),
85 LLRPExceptionHandlerTypeMap.EXCEPTION_MSG_SENDING_ERROR,
86 worker.getAdaptor().getAdaptorName(), readerName);
87 }
88 }
89
90
91
92
93
94 public void setWorker(AdaptorWorker worker) {
95 this.worker = worker;
96 }
97
98 public void notifyError(LLRPRuntimeException e, String readerName) throws RemoteException {
99 AdaptorManagement.getInstance().postException(e, e.getExceptionType(),
100 worker.getAdaptor().getAdaptorName(),
101 readerName);
102 }
103 }