blob: 03384fb1707c7972a865e7222f6421d5b90a753f [file] [log] [blame]
Christopher Piro93a06642007-09-18 06:23:33 +00001make thrift a proper OTP application
2 * app-wide configuration (do DNS lookups?)
3 * default protocols / transports (forget this factory business)
4 * factor for elegance
5
6tutorial client
7
8make all methods effectful, remove the special casing (optionally, implement monads for Erlang)
9
10change objects from {record_tag, ...} to {oop_object, {record_tag, ...}, other_useful_stuff}
11so 1) we know exactly what's an object (can write is_object/1) e.g.
12 is the tuple {tTransportException, ...} an object or a tuple that happens to start with that atom?
13 we can't check this using is_record/2 without include every header file
14 also, this makes it easy to pick objects out of deep tuples
15 2) we can build more functionality into oop later if need be
16 carry around the class/superclasses so is_a(Object, ClassOrSuperclass) is easy
17 3) maybe hack up io:format and friends to run objects through oop:inspect automatically
18
19Currently we can't distingish a method exiting in the middle with an undef or function_clause from a method not being defined in a module. Big example: if the generated code can't be called at tErlProcessor.erl:63, it will exit with a missing_method not because tErlProcessor:process/3 is undefined, but because GP:process/3 is undefined, but the error makes it seem like the former happened. The oop code needs to be smarter -- I think it's possible to either a) hook into Erlang's missing function handler or b) do some introspection to determine directly whether a function is defined, rather than trying to infer from the exit.
20
21test suites
22
23move as much (program logic) as possible out of thrift_logger
24
25make thrift_logger 100% robust
26
27thrift_logger detects term width?
28
29undisgustify codegen
30
31move away from thrift_oop_server shim to straight-up gen_servers
32
33move away from Factories
34
35move away from ?L0, ?M0, and friends ... make calls in oop or individual modules (like gen_servers should be)