1 /*
2 * Licensed to the Apache Software Foundation (ASF) under one
3 * or more contributor license agreements. See the NOTICE file
4 * distributed with this work for additional information
5 * regarding copyright ownership. The ASF licenses this file
6 * to you under the Apache License, Version 2.0 (the
7 * "License"); you may not use this file except in compliance
8 * with the License. You may obtain a copy of the License at
9 *
10 * http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
17 */
18
19 package org.apache.giraph.time;
20
21 import java.util.Date;
22
23 /**
24 * Interface for handling Time related operations so that they can be mocked
25 * for testing.
26 */
27 public interface Time {
28 /** Microseconds per millisecond */
29 long US_PER_MS = 1000;
30 /** Nanoseconds per microsecond */
31 long NS_PER_US = 1000;
32 /** Nanoseconds per millisecond */
33 long NS_PER_MS = US_PER_MS * NS_PER_US;
34 /** Milliseconds per second */
35 long MS_PER_SECOND = 1000;
36 /** Milliseconds per second (as float) */
37 float MS_PER_SECOND_AS_FLOAT = MS_PER_SECOND * 1f;
38 /** Microseconds per second */
39 long US_PER_SECOND = US_PER_MS * MS_PER_SECOND;
40 /** Microseconds per second (as float) */
41 float US_PER_SECOND_AS_FLOAT = US_PER_SECOND * 1f;
42 /** Nanoseconds per second */
43 long NS_PER_SECOND = NS_PER_US * US_PER_SECOND;
44 /** Nanoseconds per second (as float) */
45 float NS_PER_SECOND_AS_FLOAT = NS_PER_SECOND * 1f;
46 /** Seconds per hour */
47 long SECONDS_PER_HOUR = 60 * 60;
48 /** Seconds per day */
49 long SECONDS_PER_DAY = 24 * SECONDS_PER_HOUR;
50 /** Milliseconds per hour */
51 long MS_PER_HOUR = SECONDS_PER_HOUR * MS_PER_SECOND;
52 /** Milliseconds per day */
53 long MS_PER_DAY = SECONDS_PER_DAY * MS_PER_SECOND;
54
55 /**
56 * Get the current milliseconds
57 *
58 * @return The difference, measured in milliseconds, between
59 * the current time and midnight, January 1, 1970 UTC.
60 */
61 long getMilliseconds();
62
63 /**
64 * Get the current microseconds
65 *
66 * @return The difference, measured in microseconds, between
67 * the current time and midnight, January 1, 1970 UTC.
68 */
69 long getMicroseconds();
70
71 /**
72 * Get the current nanoseconds
73 *
74 * @return The difference, measured in nanoseconds, between
75 * the current time and midnight, January 1, 1970 UTC.
76 */
77 long getNanoseconds();
78
79 /**
80 * Get the current seconds
81 *
82 * @return The difference, measured in seconds, between
83 * the current time and midnight, January 1, 1970 UTC.
84 */
85 int getSeconds();
86
87 /**
88 * Get the current date
89 *
90 * @return Current date
91 */
92 Date getCurrentDate();
93
94 /**
95 * Current thread should sleep for some number of milliseconds.
96 *
97 * @param milliseconds Milliseconds to sleep for
98 * @throws InterruptedException
99 */
100 void sleep(long milliseconds) throws InterruptedException;
101 }