[sr-dev] htable add/delete RPC commands

Ovidiu Sas osas at voipembedded.com
Mon Feb 24 21:58:07 CET 2014


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?

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
>



-- 
VoIP Embedded, Inc.
http://www.voipembedded.com



More information about the sr-dev mailing list