1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.fourthline.cling.model.message.discovery;
17
18 import org.fourthline.cling.model.message.IncomingDatagramMessage;
19 import org.fourthline.cling.model.message.UpnpResponse;
20 import org.fourthline.cling.model.message.header.DeviceUSNHeader;
21 import org.fourthline.cling.model.message.header.InterfaceMacHeader;
22 import org.fourthline.cling.model.message.header.LocationHeader;
23 import org.fourthline.cling.model.message.header.MaxAgeHeader;
24 import org.fourthline.cling.model.message.header.ServiceUSNHeader;
25 import org.fourthline.cling.model.message.header.UDNHeader;
26 import org.fourthline.cling.model.message.header.USNRootDeviceHeader;
27 import org.fourthline.cling.model.message.header.UpnpHeader;
28 import org.fourthline.cling.model.types.NamedDeviceType;
29 import org.fourthline.cling.model.types.NamedServiceType;
30 import org.fourthline.cling.model.types.UDN;
31
32 import java.net.URL;
33
34
35
36
37 public class IncomingSearchResponse extends IncomingDatagramMessage<UpnpResponse> {
38
39 public IncomingSearchResponse(IncomingDatagramMessage<UpnpResponse> source) {
40 super(source);
41 }
42
43 public boolean isSearchResponseMessage() {
44 UpnpHeader st = getHeaders().getFirstHeader(UpnpHeader.Type.ST);
45 UpnpHeader usn = getHeaders().getFirstHeader(UpnpHeader.Type.USN);
46 UpnpHeader ext = getHeaders().getFirstHeader(UpnpHeader.Type.EXT);
47 return st != null && st.getValue() != null && usn != null && usn.getValue() != null && ext != null;
48 }
49
50 public UDN getRootDeviceUDN() {
51
52
53 UpnpHeader<UDN> udnHeader = getHeaders().getFirstHeader(UpnpHeader.Type.USN, USNRootDeviceHeader.class);
54 if (udnHeader != null) return udnHeader.getValue();
55
56 udnHeader = getHeaders().getFirstHeader(UpnpHeader.Type.USN, UDNHeader.class);
57 if (udnHeader != null) return udnHeader.getValue();
58
59 UpnpHeader<NamedDeviceType> deviceTypeHeader = getHeaders().getFirstHeader(UpnpHeader.Type.USN, DeviceUSNHeader.class);
60 if (deviceTypeHeader != null) return deviceTypeHeader.getValue().getUdn();
61
62 UpnpHeader<NamedServiceType> serviceTypeHeader = getHeaders().getFirstHeader(UpnpHeader.Type.USN, ServiceUSNHeader.class);
63 if (serviceTypeHeader != null) return serviceTypeHeader.getValue().getUdn();
64
65 return null;
66 }
67
68 public URL getLocationURL() {
69 LocationHeader header = getHeaders().getFirstHeader(UpnpHeader.Type.LOCATION, LocationHeader.class);
70 if (header != null) {
71 return header.getValue();
72 }
73 return null;
74 }
75
76 public Integer getMaxAge() {
77 MaxAgeHeader header = getHeaders().getFirstHeader(UpnpHeader.Type.MAX_AGE, MaxAgeHeader.class);
78 if (header != null) {
79 return header.getValue();
80 }
81 return null;
82 }
83
84 public byte[] getInterfaceMacHeader() {
85 InterfaceMacHeader header = getHeaders().getFirstHeader(UpnpHeader.Type.EXT_IFACE_MAC, InterfaceMacHeader.class);
86 if (header != null) {
87 return header.getValue();
88 }
89 return null;
90 }
91
92 }