[sr-dev] htable add/delete RPC commands

Daniel-Constantin Mierla miconda at gmail.com
Mon Feb 24 22:04:09 CET 2014


On 24/02/14 21:58, Ovidiu Sas wrote:
> Yeah, I started to re-read the module, and yes, something is there,
> but not easy to understand on a first read.
> Maybe we need to enhance the readme with a small example :)
>
> Let's say, we have table 'test' with an array key with the following values:
> key[0] with val 'zero'
> key[1] with val 'one'
> key[2] with val 'two'
> and key::size set to 3
>
> If we delete key[1], the we are left with:
> key[0] with val 'zero'
> key[2] with val 'two'
> and key::size set to 2
>
> Now if we add a new key like this:
> kamcmd htable.sets test key three
>
> What will be the new key set?
> key[0] with val 'zero'
> key[2] with val 'two'
> key[3] with val 'three'
> and key::size set to 3
>
> Is this correct?
No. The 'so-called-array-here' is built only at the time of loading from 
db -- it is practically constructing a new key from the value loaded 
from the database concatenated with '[', plus the number of items with 
same db key value that were added before, plus ']'.

Then, at runtime, if you remove/add items with x[N] format, you need to 
adjust the x::size. The module doesn't do it. If anyone is willing to 
add a patch, all is welcome.

Cheers,
Daniel
>
> Thanks,
> Ovidiu
>
> On Mon, Feb 24, 2014 at 3:49 PM, Daniel-Constantin Mierla
> <miconda at gmail.com> wrote:
>> Hello,
>>
>> iirc, the overview says something about this not-real-array emulation.
>>
>> The size suffix (::size) is actually a module parameter, it is not something
>> embedded.
>>
>> So, everything here is more a conceptual approach, could have been very easy
>> something different instead of [ ] to build keys based on an incremented
>> value.
>>
>> Again, what so ever you have as 'xyz[n]' is just seen as a string by htable
>> module, it is effectively the key in the hash table, you can add, remove,
>> get, etc..
>>
>> Cheers,
>> Daniel
>>
>>
>> On 24/02/14 21:40, Ovidiu Sas wrote:
>>> Hello Daniel,
>>>
>>> The readme file or the cookboks don't say anything about this.
>>> Can you please enhance the readme?
>>>    - the indexing: key_name[n]
>>>    - the array size: key_name::size
>>>
>>> Question: can the following syntax be used to delete a specific
>>> element in an array key?
>>> kamcmd htable.get students anna[2]
>>> kamcmd htable.get students anna[0]
>>>
>>> Regards,
>>> Ovidiu Sas
>>>
>>> On Mon, Feb 24, 2014 at 2:52 PM, Daniel-Constantin Mierla
>>> <miconda at gmail.com> wrote:
>>>> Hello,
>>>>
>>>>
>>>> On 22/02/14 22:29, Juha Heinanen wrote:
>>>>> Ovidiu Sas writes:
>>>>>
>>>>>> I moved the discussion here, in a separate thread.
>>>>>> It seems that what are you looking for is not there ... not
>>>>>> implemented.
>>>>> yes, that is way is asked about it.
>>>>>
>>>>>> If you have the same key_name with different values in the table, the
>>>>>> last value will be the one loaded in memory.
>>>>>> You can't have an array of values for the same keys.
>>>>>
>>>>>> Also, there's no syntax to access a particular value in an array.
>>>>>> Maybe that's why there's no option to provide the value.
>>>>> see this:
>>>>>
>>>>> o key type - the type of the key
>>>>>
>>>>>        0 - simple key - the key is added as 'key_name'.
>>>>>
>>>>>        1 - array key - the key is added as 'key_name[n]'. n is
>>>>> incremented
>>>>>        for each key with this name to build an array in hash table.
>>>>
>>>> for clarifications, this is still a single key item in memory, just its
>>>> format is made 'key_name[n]'. Hash tables by definition work with unique
>>>> key
>>>> indexing.
>>>>
>>>> So adding such items in the hash table should be like:
>>>>
>>>> kamctl mi sht_add ht0 'abc[0]' v0
>>>> kamctl mi sht_add ht0 'abc[1]' v1
>>>> kamctl mi sht_add ht0 'abc::size' 2
>>>>
>>>> Cheers,
>>>> Daniel
>>>>
>>>>> for example:
>>>>>
>>>>>        $var(size) = $sht(htable=>$var(key)::size);
>>>>>        $var(i) = 0;
>>>>>        while ($var(i) < $var(size)) {
>>>>>            $var(value) = $sht(htable=>$var(key)[$var(i)]);
>>>>>            ...
>>>>>
>>>>>     -- juha
>>>>>
>>>>> _______________________________________________
>>>>> sr-dev mailing list
>>>>> sr-dev at lists.sip-router.org
>>>>> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev
>>>>
>>>> --
>>>> Daniel-Constantin Mierla - http://www.asipto.com
>>>> http://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda
>>>>
>>>
>> --
>> Daniel-Constantin Mierla - http://www.asipto.com
>> http://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda
>>
>
>

-- 
Daniel-Constantin Mierla - http://www.asipto.com
http://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda




More information about the sr-dev mailing list