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.Constants;
19 import org.fourthline.cling.model.Location;
20 import org.fourthline.cling.model.message.IncomingDatagramMessage;
21 import org.fourthline.cling.model.message.OutgoingDatagramMessage;
22 import org.fourthline.cling.model.message.UpnpResponse;
23 import org.fourthline.cling.model.message.header.EXTHeader;
24 import org.fourthline.cling.model.message.header.InterfaceMacHeader;
25 import org.fourthline.cling.model.message.header.LocationHeader;
26 import org.fourthline.cling.model.message.header.MaxAgeHeader;
27 import org.fourthline.cling.model.message.header.ServerHeader;
28 import org.fourthline.cling.model.message.header.UpnpHeader;
29 import org.fourthline.cling.model.meta.LocalDevice;
30
31
32
33
34 public class OutgoingSearchResponse extends OutgoingDatagramMessage<UpnpResponse> {
35
36 public OutgoingSearchResponse(IncomingDatagramMessage request,
37 Location location,
38 LocalDevice device) {
39
40 super(new UpnpResponse(UpnpResponse.Status.OK), request.getSourceAddress(), request.getSourcePort());
41
42 getHeaders().add(UpnpHeader.Type.MAX_AGE, new MaxAgeHeader(device.getIdentity().getMaxAgeSeconds()));
43 getHeaders().add(UpnpHeader.Type.LOCATION, new LocationHeader(location.getURL()));
44 getHeaders().add(UpnpHeader.Type.SERVER, new ServerHeader());
45 getHeaders().add(UpnpHeader.Type.EXT, new EXTHeader());
46
47 if ("true".equals(System.getProperty(Constants.SYSTEM_PROPERTY_ANNOUNCE_MAC_ADDRESS))
48 && location.getNetworkAddress().getHardwareAddress() != null) {
49 getHeaders().add(
50 UpnpHeader.Type.EXT_IFACE_MAC,
51 new InterfaceMacHeader(location.getNetworkAddress().getHardwareAddress())
52 );
53 }
54 }
55
56 }