1e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET#ifndef HEADER_CURL_LIBTEST_TESTUTIL_H
2e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET#define HEADER_CURL_LIBTEST_TESTUTIL_H
39bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels/***************************************************************************
49bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels *                                  _   _ ____  _
59bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels *  Project                     ___| | | |  _ \| |
69bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels *                             / __| | | | |_) | |
79bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels *                            | (__| |_| |  _ <| |___
89bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels *                             \___|\___/|_| \_\_____|
99bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels *
10e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
119bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels *
129bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels * This software is licensed as described in the file COPYING, which
139bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels * you should have received as part of this distribution. The terms
148f1a214b8a21b66f33454790dfba97ae2f818289Alex Deymo * are also available at https://curl.haxx.se/docs/copyright.html.
159bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels *
169bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels * You may opt to use, copy, modify, merge, publish, distribute and/or sell
179bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels * copies of the Software, and permit persons to whom the Software is
189bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels * furnished to do so, under the terms of the COPYING file.
199bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels *
209bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
219bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels * KIND, either express or implied.
229bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels *
239bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels ***************************************************************************/
24e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET#include "curl_setup.h"
259bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels
269bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsstruct timeval tutil_tvnow(void);
279bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels
289bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels/*
299bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels * Make sure that the first argument (t1) is the more recent time and t2 is
309bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels * the older time, as otherwise you get a weird negative time-diff back...
319bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels *
329bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels * Returns: the time difference in number of milliseconds.
339bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels */
349bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelslong tutil_tvdiff(struct timeval t1, struct timeval t2);
359bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels
369bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels/*
379bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels * Same as tutil_tvdiff but with full usec resolution.
389bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels *
399bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels * Returns: the time difference in seconds with subsecond resolution.
409bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels */
419bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelsdouble tutil_tvdiff_secs(struct timeval t1, struct timeval t2);
429bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels
439bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckelslong tutil_tvlong(struct timeval t1);
449bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels
459bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels
46e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET#endif  /* HEADER_CURL_LIBTEST_TESTUTIL_H */
479bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels
48