1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.fourthline.cling.support.igd.callback;
17
18 import org.fourthline.cling.controlpoint.ActionCallback;
19 import org.fourthline.cling.model.action.ActionException;
20 import org.fourthline.cling.model.action.ActionInvocation;
21 import org.fourthline.cling.model.meta.Service;
22 import org.fourthline.cling.model.types.ErrorCode;
23 import org.fourthline.cling.model.types.UnsignedIntegerFourBytes;
24 import org.fourthline.cling.support.model.Connection;
25
26
27
28
29 public abstract class GetStatusInfo extends ActionCallback {
30
31 public GetStatusInfo(Service service) {
32 super(new ActionInvocation(service.getAction("GetStatusInfo")));
33 }
34
35 @Override
36 public void success(ActionInvocation invocation) {
37
38 try {
39 Connection.Status status =
40 Connection.Status.valueOf(invocation.getOutput("NewConnectionStatus").getValue().toString());
41
42 Connection.Error lastError =
43 Connection.Error.valueOf(invocation.getOutput("NewLastConnectionError").getValue().toString());
44
45 success(new Connection.StatusInfo(status, (UnsignedIntegerFourBytes) invocation.getOutput("NewUptime").getValue(), lastError));
46
47 } catch (Exception ex) {
48 invocation.setFailure(
49 new ActionException(
50 ErrorCode.ARGUMENT_VALUE_INVALID,
51 "Invalid status or last error string: " + ex,
52 ex
53 )
54 );
55 failure(invocation, null);
56 }
57 }
58
59 protected abstract void success(Connection.StatusInfo statusInfo);
60 }