This project has retired. For details please refer to its Attic page.
Time xref
View Javadoc

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 }