summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2012-03-22Moved Perl implementation to a separate repositoryoldYorhel2-613/+0
2012-03-22proto: Documented some simple ideas on how to do securityYorhel1-0/+58
2012-03-21Sync spec.pod and proto.pod with behaviour of Perl and C imlementationYorhel2-83/+89
Well, almost. Neither the Perl nor the C implementation completely follow the current spec, but their overal semantics are what I've decided on. The most important change with my previous ideas is that tuples are now dynamically typed and the removal of the boolean type. This is because it's much easier (and much more "natural") to implement dynamic typing semantics on top of a statically typed language than the other way around.
2012-03-15c: Moved c directory to a separate repositoryYorhel6-2433/+0
2012-03-14c: Added JSON parser + fixed some bugs in formatter + tuple handlingYorhel4-19/+444
2012-03-10perl: Use ref-counted variable to detect whether pattern is unregisteredYorhel1-4/+6
A bit more reliable than using an ID that may be re-used.
2012-03-02c: Use lbuf abstraction for JSON-formatting tuplesYorhel3-103/+97
Makes it easier/more efficient to write tuples directly to the link buffer.
2012-03-02c: Improved error handling for link objectsYorhel4-24/+82
2012-03-02c: Added pthread context for links + fixed a few bugsYorhel4-38/+198
It can do a successful handshake now, yay!
2012-03-01c: Started on the link implementationYorhel2-0/+202
Emphasis on "started", I don't even have the means yet to test it. There's also no error reporting at all yet.
2012-02-28c: Added crude pthread-based "event loop" + fixed a few bugsYorhel5-4/+135
2012-02-27c: Implemented dispatcher for tuples and replies and for sessionsYorhel2-13/+122
There's a lot of tricky stuff going on to make this thread-safe. Meh :(
2012-02-27c: Unregister patterns and close/free queued messages in tn_session_close()Yorhel1-11/+40
2012-02-27c: Generalize patternreg and tn_returnpath for links and sessionsYorhel1-17/+26
2012-02-27c: Started on session & returnpath abstractions + various improvementsYorhel3-37/+223
Turned some macros into static inline functions and improved the atomic_ macros. Still many TODO's left.
2012-02-26c: Added match implementation + make patternreg a ref-counted structYorhel3-11/+82
The patternreg struct is the perfect way to detect whether a pattern is still registered at the time it is received by the session. (More efficient than the local hash-table check that the current Perl implementation uses)
2012-02-25c: tuples.c -> tanja.c + added khash.h + Started on node implementationYorhel4-4/+689
2012-02-24c: Started on a C implementationYorhel4-0/+374
I didn't intent to write the JSON formatter immediately, but wanted to be able to print out tuples for debugging purposes. Since I incidentally happened to be writing a JSON-like formatter anyway, it wasn't a very large step to make it a fully conforming one.
2012-02-23go: Removing the Go implementationYorhel8-1326/+0
I'm not going to continue this one anyway within the foreseeable future. I seem to be incompatible with Go.
2012-02-23go: Moved to go/ dir and s/server/node/gYorhel8-99/+101
2012-02-23perl&doc: s/server/node/gYorhel5-42/+42
I find "node" to be much more descriptive for that. The Go implementation hasn't been updated yet, though...
2012-02-22perl: Allow user to specify supported serialization formatsYorhel2-13/+40
And removed the storable format from proto.pod. Looks like Storable has a few annoying incompatibilities with different versions, so let's not use it.
2012-02-22perl: Allow a different AnyEvent::Handle for reading and writingYorhel2-15/+27
This allows two unidirectional pipes (e.g. STDIN/STDOUT) to be used for communication. There's no obvious or efficient way to combine two pipes into a single AnyEvent::Handle.
2012-02-22perl: Updated Tanja::Link to use the new protocolYorhel2-12/+9
2012-02-22doc/proto: Changed protocol to fully symmetric + better format selectionYorhel1-43/+83
2012-02-19perl: Implemented new proto + fixed many bugs; doc: Updated proto/JSONYorhel3-52/+160
2012-02-19doc: Added definitions to spec.pod + partial rewrite of proto.podYorhel2-44/+113
I seriously need to get the terminology right and consistent.
2012-02-19perl: s/response/reply/g + added a link test that currently still failsYorhel2-8/+28
2012-02-19doc: tanja.pod -> spec.pod + specify that wildcars are allowed in tuplesYorhel1-32/+29
2012-02-18perl: Load AnyEvent::Handle and JSON/JSON::XS modules when neededYorhel1-10/+14
2012-02-18perl: Implemented full link supportYorhel1-9/+95
Yay, this is the first complete and working implementation of the link protocol! Not really final yet, though, but at least something to experiment with.
2012-02-17perl: Add JSON serialization module + send register messages on connectYorhel1-2/+43
2012-02-17perl: Started on Tanja::Link + implemented handshakingYorhel2-2/+61
2012-02-16perl: Only 'use AnyEvent;' onceYorhel1-3/+9
The others are rather pointless.
2012-02-16perl: Remove 'reply' argument + added return-path functionalityYorhel2-21/+60
The 'reply' thing is more typing overhead than it is worth. Especially since the return-path functionality uses Perl's GC to automatically close the return-path when no sessions have a reference to the object anymore. A session can simply not read the second argument of the tuple-callback to close the return path. (This does mean that the path will stay open for as long as the function is running, but that doesn't matter anyway in a single-threaded application.)
2012-02-16perl: Use AnyEvent::postpone() to make tuple dispatch asynchronousYorhel2-7/+12
2012-02-16Started on a simple Perl implementation (using AnyEvent)Yorhel2-0/+221
Note that I'm not even actually using AnyEvent functionality at the moment. But no doubt I'm going to need it anyway.
2012-02-15Added README file referring to the articleYorhel1-0/+11
This project is totally incomprehensible even if you've read that, but at least you'll know my intention. :-)
2012-02-15Added doc/tanja.pod + Rewrote parts of proto.go (still unfinished)Yorhel6-54/+306
2012-02-04Continued on proto.goYorhel3-29/+129
But there's still a lot of TODO's left.
2012-02-04Fixed bug with not closing reply channel when no patterns matchedYorhel2-2/+10
2012-01-29Started on Server<->Server linking protocol + implementationYorhel4-0/+500
2012-01-29Make PatternReg a 32-bit integer + handle overflowYorhel1-3/+10
The Server-Server communication protocol assumes that pattern registration IDs are 32bit. 64bit IDs are a bit overkill, anyway.
2012-01-29SessionReg -> PatternReg, let the server assign the IDsYorhel3-34/+46
This makes the pattern registration IDs unique within a server instance, which makes it easier to link multiple servers together.
2012-01-28Use boolean return to unregister from callback instead of SessionReg argYorhel2-20/+30
This is probably a bit more convenient.
2012-01-28tcomm -> tanja, removed tiger code and moved tcomm/ into /Yorhel8-529/+5
This is now a separate project.
2012-01-25tcomm: Incorporated sessionRegData struct into server{Recv,Pattern}Yorhel2-13/+9
This only improves performance marginally, but looks somewhat cleaner anyway.
2012-01-24tcomm/matching.go: Use single append() instead of for loopYorhel1-5/+1
Similarly to previous commit: the "..." thing allows a slice-append to be used.
2012-01-24tcomm: Removed SendT() and RequestT()Yorhel2-12/+4
I realized you can just use "..." to expand a slice to vararg functions.
2012-01-24Wrote a simple tiger packageYorhel4-0/+525
It's sloooooowwww. Far too slow to be useful. For comparison: This implementation: BenchmarkTigerKB 100000 15153 ns/op 67.57 MB/s BenchmarkTigerSmall 100000 18154 ns/op 28.20 MB/s rhash: $ dd if=/dev/zero bs=1M count=1000 | rhash --tiger - 1000+0 records in 1000+0 records out 1048576000 bytes (1.0 GB) copied, 4.51767 s, 232 MB/s dd7d6c8ec53853261cec5d87ebeb9b5483f14b14a8dad327 (stdin)