OpenSplice Java 5 DCPS  v6.x
OpenSplice Java 5 OpenSplice Data Distribution Service Data-Centric Publish-Subscribe API
LatencyBudgetImpl.java
Go to the documentation of this file.
1 /*
2  * Vortex OpenSplice
3  *
4  * This software and documentation are Copyright 2006 to 2024 ADLINK
5  * Technology Limited, its affiliated companies and licensors. All rights
6  * reserved.
7  *
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  * http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  *
20  */
21 package org.opensplice.dds.core.policy;
22 
23 import java.util.concurrent.TimeUnit;
24 
25 import org.omg.dds.core.Duration;
30 
31 public class LatencyBudgetImpl extends QosPolicyImpl implements LatencyBudget {
32  private static final long serialVersionUID = 1583305102265712684L;
33  private final Duration duration;
34 
36  super(environment);
37  this.duration = environment.getSPI().zeroDuration();
38  }
39 
41  Duration duration) {
42  super(environment);
43 
44  if (duration == null) {
45  throw new IllegalArgumentExceptionImpl(environment,
46  "Supplied invalid duration.");
47  }
48  this.duration = duration;
49  }
50 
51  @Override
52  public Comparable<LatencyBudget> requestedOfferedContract() {
53  return this;
54  }
55 
56  @Override
57  public int compareTo(LatencyBudget o) {
58  return this.duration.compareTo(o.getDuration());
59  }
60 
61  @Override
62  public boolean equals(Object other) {
63  if (!(other instanceof LatencyBudgetImpl)) {
64  return false;
65  }
66  return this.duration.equals(((LatencyBudgetImpl) other).duration);
67  }
68 
69  @Override
70  public Duration getDuration() {
71  return this.duration;
72  }
73 
74  @Override
75  public LatencyBudget withDuration(Duration duration) {
76  return new LatencyBudgetImpl(this.environment, duration);
77  }
78 
79  @Override
80  public LatencyBudget withDuration(long duration, TimeUnit unit) {
81  return new LatencyBudgetImpl(this.environment, this.environment
82  .getSPI().newDuration(duration, unit));
83  }
84 
85  @Override
86  public Class<? extends QosPolicy> getPolicyClass() {
87  return LatencyBudget.class;
88  }
89 
90  @Override
91  public int hashCode() {
92  return 31 * 17 + this.duration.hashCode();
93  }
94 
95 }
Specifies the maximum acceptable delay from the time the data is written until the data is inserted i...
LatencyBudget withDuration(long duration, TimeUnit unit)
Copy this policy and override the value of the property.
LatencyBudget withDuration(Duration duration)
Copy this policy and override the value of the property.
LatencyBudgetImpl(OsplServiceEnvironment environment)
Comparable< LatencyBudget > requestedOfferedContract()
This class is the abstract root for all the QoS policies.
Definition: QosPolicy.java:118
LatencyBudgetImpl(OsplServiceEnvironment environment, Duration duration)
A span of elapsed time expressed with nanosecond precision.
Definition: Duration.java:35