Salut Benoit!

there's no rush, then most important thing is IMHO having it before we
intend proceeding on cutting out a release.

Count on me if you need a help on that, glad to co-work!

A beintot,
-Simo

http://people.apache.org/~simonetripodi/
http://simonetripodi.livejournal.com/
http://twitter.com/simonetripodi
http://www.99soft.org/



On Sat, Feb 25, 2012 at 3:09 PM, Benoit Perroud <[email protected]> wrote:
> Hi Simone,
>
> Thanks for your comment.
>
> I'm working on an iterative process to refactor the backend but I
> don't want to break everything and reincarnate in stone ;)
> So here I just wanted to extract the interface, it's now easier to
> refactor starting from here.
>
> All your remarks are really relevant and I will take them in account.
> I should be able to preview something in a fork by the begining of the
> week.
>
> Thanks !
>
> Benoit.
>
> 2012/2/25 Simone Tripodi <[email protected]>:
>> Salut Benoit!
>>
>> merci, I like it! Since we are changing the Pointer design, I just
>> have few questions - I see you replicated the original behavior ATM -
>> so I am asking about possible improvements, I commented inline
>>
>>> +public interface Pointer<T>
>>> +{
>>> +
>>> +    byte[] content();
>>>
>>> -import java.nio.ByteBuffer;
>>> +    boolean isFree();
>>>
>>> -public class Pointer<T>
>>> -{
>>> -    public int start;
>>> +    void setFree( boolean free );
>>>
>>
>> I don't understand why the pointer free status should be set from
>> outside - shouldn't be a state set internally and read from outside?
>>
>>> -    public int end;
>>> +    boolean isExpired();
>>>
>>> -    public long created;
>>> +    float getFrequency();
>>>
>>> -    public long expires;
>>> +    int getCapacity();
>>>
>>> -    public long expiresIn;
>>> +    void reset();
>>>
>>> -    public long hits;
>>> +    int getBufferNumber();
>>>
>>> -    public boolean free;
>>> +    void setBufferNumber( int bufferNumber );
>>>
>>
>> can't the bufferNumber be immutable? what does it mean change it at
>> runtime, while the cache is running?
>>
>>> -    public long lastHit;
>>> +    int getStart();
>>>
>>> -    public int bufferNumber;
>>> +    void setStart( int start );
>>>
>>> -    public Class<? extends T> clazz;
>>> +    int getEnd();
>>>
>>> -    public ByteBuffer directBuffer = null;
>>> +    void setEnd( int end );
>>>
>>
>> as above: couldn't start/end be immutable?
>>
>>> -    public Pointer()
>>> -    {
>>> -    }
>>> +    void hit();
>>>
>>> -    public Pointer( int start, int end )
>>> -    {
>>> -        this.start = start;
>>> -        this.end = end;
>>> -    }
>>> +    Class<? extends T> getClazz();
>>>
>>> -    public byte[] content()
>>> -    {
>>> -        return null;
>>> -    }
>>> +    void setClazz( Class<? extends T> clazz );
>>>
>>
>> as above: shouldn't the reflected type be immutable? or the
>> application needs to be able to reset the type?
>>
>>> -    public boolean expired()
>>> -    {
>>> -        if ( expires > 0 || expiresIn > 0 )
>>> -        {
>>> -            return ( expiresIn + created < currentTimeMillis() );
>>> -        }
>>> -        return false;
>>> -    }
>>> +    ByteBuffer getDirectBuffer();
>>>
>>> -    public float getFrequency()
>>> -    {
>>> -        return (float) ( currentTimeMillis() - created ) / hits;
>>> -    }
>>> +    void setDirectBuffer( ByteBuffer directBuffer );
>>>
>>
>> as above
>>
>>> -    public int getCapacity()
>>> -    {
>>> -        return end - start + 1;
>>> -    }
>>> +    void createdNow();
>>> +
>>> +    void setExpiration( long expires, long expiresIn );
>>>
>>> -    @Override
>>> -    public String toString()
>>> -    {
>>> -        return format( "%s[%s, %s] %s free", getClass().getSimpleName(), 
>>> start, end,( free ? "" : "not" ) );
>>> -    }
>>>  }
>>>
>>
>> IMHO the Pointer interface should expose read-only methods as much as
>> possible, and set them in the related Impl via the constructor.
>>
>> WDYT? Merci en avance,
>> Simo
>
>
>
> --
> sent from my Nokia 3210

Reply via email to