lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]

I originally tried indexing with an anonymous table as the key, ie

connection_record[ {proto="tcp", source_ip="", source_port="123",
dest_ip="", dest_port="567"} ] = whatever

When I want to update the table I tried constructing another anonymous
table with the exact same keys & values.  This didn't work, I presume
due to the fact that they pointed to different tables, albeit with the
same values.


So what I did was borrow from awk, and create a string key, i.e.:

] = whatever

where SUBSEP is a character guaranteed to not be in the fields making up
the key.

This, however, seems kludgy.

Hey, if it works well, it's not kludgy! [;-)]

Is there a "lua" way to accomplish this task more elegantly?

Another approach would be to manage a tree of tables, I guess. The trees in each level corresponding to one index property. Can be quite quick, depending on what you need to do.

A third (and somewhat more eloborate) solution is interfacing with a small database engine like SQLite. That would enable you to have easy access to (for example) in-memory database tables, allowing you to search & update complex structures very efficiently.

My point is: always keep in mind that if "standard" Lua doesn't quite provide you with the solution you're looking for, it's always incredibly easy to integrate something (into it) that will.

no signature is a signature.