[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