[Asterisk-Dev] Asterisk channel variable access: a proposal
John Todd
jtodd at loligo.com
Wed Aug 18 15:39:05 MST 2004
At 3:12 PM -0500 on 8/18/04, Tilghman Lesher wrote:
>On Wednesday 18 August 2004 13:37, Andrew Kohlsmith wrote:
>> On Wednesday 18 August 2004 14:32, Tilghman Lesher wrote:
>> > On Tuesday 17 August 2004 08:46, John Todd wrote:
>> > > I hadn't really considered actually making it a filesystem in
>> > > exactly the same way /proc worked; I just wanted to lay out the
>> > > structure with the "/" as the inter-field designator, but keep
>> > > the data inside astdb (or a shim in front of astdb.) However,
>> > > I suppose "asterisk -rx database get channels/SIP/2109-996a
>> > > codec-in" would work for you to allow external programs to
>> > > access that data in a hypothetical example.
>> >
>> > Ack. No. Please.
>> >
>> > Don't put transient call-related information into astdb (or even
>> > in front of it, using a shim). Astdb is for information that you
>> > want to remain across calls and across invocations of Asterisk.
>> > It is _NOT_ for information which is call-specific. That's why
>> > we have channel variables.
>> >
>> > Note that I have no problem with the information being available
>> > in that format, just with the idea of placing it within the
>> > database (or making it seem like it comes out of the database).
>>
>> I quoted your entire response as I'm a little lazy and didn't want
>> to cut and paste and attempt to reconstruct what you'd said. :-)
>>
>> What are your feelings on a /proc-style filesystem for asterisk
>> "live" data? That's precisely what /proc is like under Linux and it
>> seems to make a *lot* of sense, at least in a transient data kind
>> of sense.
>
>Doesn't sound too bad. I'd be interested in seeing your
>implementation.
>
>> I agree though that it should not hit any kind of real DB... that
>> would hammer your I/O.
>
>Well, it shouldn't hit the disk, at any rate. My opposition is purely
>from an API perspective: I don't want transient data conmingled with
>my semi-permanent data, at least in a way where I can't distinguish
>the two. It's fine to have the information available, but let's have
>different APIs for accessing different types of data.
>
>--
>Tilghman
My comments earlier about this being a 'database-like' structure were
only because the /proc filesystem format resembles astdb, which in
turn resembles a (flat) database. I agree that none of this should
typically hit a disk, or even "exist" until requested.
I think that we've got the astdb structure already in place for
certain core variables, and perhaps it makes sense to just extend
this format. Creating a "top-level" structure like "/var" or "/tmp"
might be able to allow easy determination between values that get
stored across restarts (like /SIP does) and values that don't get
stored which are per-call based. This could just be trying to
shoehorn things into the wrong structure; I'm just trying to present
ideas in an already-understood syntax that we have on-hand.
An alternate method would be to create an application, as has been
suggested. This may be more modular and require less patches to the
"mainline" code (though that is a poor reason to choose one method
over the other - "convenience of explanation and patching")
The third method would be to completely re-work Asterisk, as has also
been suggested.
JT
More information about the asterisk-dev
mailing list