1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.fourthline.cling.support.connectionmanager.callback;
17
18 import org.fourthline.cling.controlpoint.ActionCallback;
19 import org.fourthline.cling.controlpoint.ControlPoint;
20 import org.fourthline.cling.model.action.ActionArgumentValue;
21 import org.fourthline.cling.model.action.ActionException;
22 import org.fourthline.cling.model.action.ActionInvocation;
23 import org.fourthline.cling.model.meta.Service;
24 import org.fourthline.cling.model.types.ErrorCode;
25 import org.fourthline.cling.support.model.ProtocolInfos;
26
27
28
29
30 public abstract class GetProtocolInfo extends ActionCallback {
31
32 public GetProtocolInfo(Service service) {
33 this(service, null);
34 }
35
36 protected GetProtocolInfo(Service service, ControlPoint controlPoint) {
37 super(new ActionInvocation(service.getAction("GetProtocolInfo")), controlPoint);
38 }
39
40 @Override
41 public void success(ActionInvocation invocation) {
42 try {
43 ActionArgumentValue sink = invocation.getOutput("Sink");
44 ActionArgumentValue source = invocation.getOutput("Source");
45
46 received(
47 invocation,
48 sink != null ? new ProtocolInfos(sink.toString()) : null,
49 source != null ? new ProtocolInfos(source.toString()) : null
50 );
51
52 } catch (Exception ex) {
53 invocation.setFailure(
54 new ActionException(ErrorCode.ACTION_FAILED, "Can't parse ProtocolInfo response: " + ex, ex)
55 );
56 failure(invocation, null);
57 }
58 }
59
60 public abstract void received(ActionInvocation actionInvocation, ProtocolInfos sinkProtocolInfos, ProtocolInfos sourceProtocolInfos);
61
62 }