[Serdev] SER's core design features(process
model/parser/lumps/script) - was: So who/what is SER for, anyway?
Greger V. Teigre
greger at teigre.com
Thu Jan 25 12:46:06 UTC 2007
> Greger's comment: Dragos have several observations related to the core
> design of SER, namely the process model, the parser, the lumps and the
> script. Thus, the thread name: SER's core design features(process
> model/parser/lumps/script).
> --------------------------------------
>
> So let me be specific:
> - the process model
> - believe it or not, I might want to write a module that needs more
> processes to be efficient. SER is no longer "just a SIP proxy".
Hm, sounds a bit complicated to me. You mean that you need a process
model where you can create more processes from a module? I don't really
see the use case and in what way the current model is hindering you.
Could you please elaborate?
> - yes, I know about the FIFO, RPC and whatever other interfaces, but
> is anyone fully satisfied with that?
You are mixing FIFO and RPC into the discussion of the process model.
I'm a bit confused?! Maybe an example (or explanation of the needs of
the openimscore project) would help.
>
> - the parser
> - if SIP is an extensible protocol regarding the headers, why don't
> we have an equally easy to extend parser? For example, the header name
> parser could be auto-generated from a list of configurable header names.
> - and do we really need it that fast anyway? I have seen some
> changes that push code clarity instead of insane performance, just keep
> them coming.
> - in the end could we have a clear and nice API to work with SIP
> messages, headers and URIs? Because not everybody wants to deal with SIP
> syntax all the time, yet every module re-implements the hunt for header
> values.
I couldn't agree more. Martin has also pointed out that the module
interface needs a revamp. I think maybe such a revamp could form the
core of more adaptable SER. There are too many things that each module
has to take care of, and the API(s) available to the modules are not
well documented. The code also has some history where some modules use
old functions that should have been deprecated, but not been updated. I
agree with you, a clean interface with a clearly defined API would make
it a lot easier to develop modules for SER.
>
> - the lumps
> - performance + memory concerns, ok, but the mechanism is a little
> perverse. First you do not (and can not) enforce even the RFC compliance
> of messages. Then if I do a change, another module can't see it and you
> just hope all will be fine.
Yes, lumps is a funny thing :-( There is a lack of abstraction here.
Modules shouldn't have to deal with lumps, it should be an
implementation issue in the core. Again, a clean API for manipulating
messages should be made available to the modules, and the API could use
lumps for implementation. The performance degradation would probably not
be too much?!
g-)
More information about the Serdev
mailing list