[infinispan-dev] [Discussion] TimeService implementation
Mircea Markus
mmarkus at redhat.com
Mon Apr 29 12:53:24 EDT 2013
On 29 Apr 2013, at 17:34, Pedro Ruivo wrote:
> Hi,
>
> The TimeService interface is going to replace all the System.nanoTime()
> and System.currentTimeMillis() in the code and it will allow to replace
> in the test suite in order to provide a better control over the time
> dependent code (if needed).
>
> The objective of this email is to discuss possible implementation and
> interface that will cover the needs of everybody (or at least try it).
> Later I'll create a JIRA and start the implementation (except if someone
> really wants to implement it :P)
>
> * Interface:
>
> //return the current time in nanoseconds and milliseconds respectively
> long nowNanos()
> long nowMillis()
What about time() and wallClockTime() with overloaded methods time(TimeUnit) and wallClockTime(TimeUnit)?
>
> //return the duration between now() and the startNanos/Millis
> long durationNanos(long startNanos)
> long durationMillis(long startMillis)
+1
>
> //return the duration between start+ and end+
> long durationNanos(long startNanos, long endNanos)
besides return (endNanos - startNanos) does it do some sanity checks? if it's only for the difference i think the subtraction is simpler
> long durationMillis(long startMillis, long endMillis)
>
> Any other method? Maybe adding a TimeUnit parameter instead of duplicate
> methods (e.g. now(TimeUnit))?
both :-)
> Maybe some convert() with double
> precision, since the TimeUnit.convert(...) usually loses precision?
only when moving from finer to coarser granularity, but that's to be expected.
>
> (I need double precision for the Extended Statistics, but I can put this
> converters in my classes)
>
> * Scope:
>
> Should the TimeService be in a cache or global scope? My vote is per
> cache...
+1
>
> * Configuration
>
> Should we provide a configuration to pass an implementation of the
> TimeService interface? if yes, we may need to change the methods above
> to return some interface (e.g. TimeStamp) in order to support almost
> anything.
I liked your idea to inject it in the ComponentRegistry. Perhaps a ComponentRegistry.setTimeService method?
>
> Any other subject? Thoughts?
>
> If I was not clear let me know...
>
> Cheers,
> Pedro Ruivo
> _______________________________________________
> infinispan-dev mailing list
> infinispan-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/infinispan-dev
Cheers,
--
Mircea Markus
Infinispan lead (www.infinispan.org)
More information about the infinispan-dev
mailing list