1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.fourthline.cling.model.message.gena;
17
18 import org.fourthline.cling.model.gena.RemoteGENASubscription;
19 import org.fourthline.cling.model.message.StreamRequestMessage;
20 import org.fourthline.cling.model.message.UpnpHeaders;
21 import org.fourthline.cling.model.message.UpnpRequest;
22 import org.fourthline.cling.model.message.header.CallbackHeader;
23 import org.fourthline.cling.model.message.header.NTEventHeader;
24 import org.fourthline.cling.model.message.header.TimeoutHeader;
25 import org.fourthline.cling.model.message.header.UpnpHeader;
26
27 import java.net.URL;
28 import java.util.List;
29
30
31
32
33 public class OutgoingSubscribeRequestMessage extends StreamRequestMessage {
34
35 public OutgoingSubscribeRequestMessage(RemoteGENASubscription subscription,
36 List<URL> callbackURLs,
37 UpnpHeaders extraHeaders) {
38
39 super(UpnpRequest.Method.SUBSCRIBE, subscription.getEventSubscriptionURL());
40
41 getHeaders().add(
42 UpnpHeader.Type.CALLBACK,
43 new CallbackHeader(callbackURLs)
44 );
45
46 getHeaders().add(
47 UpnpHeader.Type.NT,
48 new NTEventHeader()
49 );
50
51 getHeaders().add(
52 UpnpHeader.Type.TIMEOUT,
53 new TimeoutHeader(subscription.getRequestedDurationSeconds())
54 );
55
56 if (extraHeaders != null)
57 getHeaders().putAll(extraHeaders);
58 }
59
60 public boolean hasCallbackURLs() {
61 CallbackHeader callbackHeader =
62 getHeaders().getFirstHeader(UpnpHeader.Type.CALLBACK, CallbackHeader.class);
63 return callbackHeader.getValue().size() > 0;
64 }
65
66 }