|
From: Christian S. <chr...@ep...> - 2004-03-05 15:24:23
|
Changes:
- Implemented parser for the LinuxSampler control protocol (LSCP) by
using flex / bison (where src/network/lscp.l is the input file for lex /
flex and src/network/lscp.y is the input file for yacc / bison). Parser and
scanner can be regenerated by 'make parser' (only necessary though if one
of the two input files where modified).
To be honest I'm not quite sure so far if this parser solution is a good
choice, especially because I'm a bit disappointed about it's runtime
efficiency (a main problem is that lexical analyzer and semantic analyzer
are separated which is a big disadvantage for the parser generator in
regards of optimization), but this lex/yacc soultion has the advantage
of defining the protocol on a higher level and is thus easier to maintain
in regards of a growing and possible complex protocol. We'll see...
If somebody's not familiar with lex/yacc, I can give an introduction to the
current LSCP implementation in a short mail if demanded.
If somebody has a suggestion for another parser generator, let me know!
- Implemented LSCP network server (only single threaded so far, thus is only
capable to handle one connection at one time), LSCP server will be launched
if LinuxSampler was started with the new "--server" flag. So far I
implemented the following LSCP commands:
* "LOAD INSTRUMENT"
* "GET CHANNEL VOICE_COUNT"
* "GET CHANNEL STREAM_COUNT"
* "GET CHANNEL BUFFER_FILL"
* "SET CHANNEL VOLUME"
* "RESET CHANNEL"
In src/network/lscpserver.cpp there already all methods which will be
called in case of the respective network command. But most of them
currently just return a "ERR:0:Not implemented yet" error message, so these
methods need to be "wired" now with the engine and have to return a
meaningful response message. If anybody likes to implement one of those
methods I would appreciate that! (Vladimir perhaps?)
- disk thread now started within the engine
CU
Christian
P.S. It's time for a frontend... :)
|