1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.fourthline.cling.model.gena;
17
18 import java.util.LinkedHashMap;
19 import java.util.Map;
20
21 import org.fourthline.cling.model.UserConstants;
22 import org.fourthline.cling.model.meta.Service;
23 import org.fourthline.cling.model.state.StateVariableValue;
24 import org.fourthline.cling.model.types.UnsignedIntegerFourBytes;
25
26
27
28
29
30
31
32
33
34
35
36 public abstract class GENASubscription<S extends Service> {
37
38 protected S service;
39 protected String subscriptionId;
40 protected int requestedDurationSeconds = UserConstants.DEFAULT_SUBSCRIPTION_DURATION_SECONDS;
41 protected int actualDurationSeconds;
42 protected UnsignedIntegerFourBytes currentSequence;
43 protected Map<String, StateVariableValue<S>> currentValues = new LinkedHashMap<>();
44
45
46
47
48 protected GENASubscription(S service) {
49 this.service = service;
50 }
51
52 public GENASubscription(S service, int requestedDurationSeconds) {
53 this(service);
54 this.requestedDurationSeconds = requestedDurationSeconds;
55 }
56
57 synchronized public S getService() {
58 return service;
59 }
60
61 synchronized public String getSubscriptionId() {
62 return subscriptionId;
63 }
64
65 synchronized public void setSubscriptionId(String subscriptionId) {
66 this.subscriptionId = subscriptionId;
67 }
68
69 synchronized public int getRequestedDurationSeconds() {
70 return requestedDurationSeconds;
71 }
72
73 synchronized public int getActualDurationSeconds() {
74 return actualDurationSeconds;
75 }
76
77 synchronized public void setActualSubscriptionDurationSeconds(int seconds) {
78 this.actualDurationSeconds = seconds;
79 }
80
81 synchronized public UnsignedIntegerFourBytes getCurrentSequence() {
82 return currentSequence;
83 }
84
85 synchronized public Map<String, StateVariableValue<S>> getCurrentValues() {
86 return currentValues;
87 }
88
89 public abstract void established();
90 public abstract void eventReceived();
91
92 @Override
93 public String toString() {
94 return "(GENASubscription, SID: " + getSubscriptionId() + ", SEQUENCE: " + getCurrentSequence() + ")";
95 }
96 }