lahiker42 | 6f28ec6 | 2008-08-27 03:51:24 +0000 | [diff] [blame] | 1 | ---------------------- |
| 2 | --- IMPORTANT TODO --- |
| 3 | ---------------------- |
lahiker42 | bb0871c | 2008-09-09 18:18:28 +0000 | [diff] [blame] | 4 | - ensure enums are int-size |
lahiker42 | ec4ea96 | 2010-09-01 04:30:30 +0000 | [diff] [blame] | 5 | - per comments on the main page: wire_format_inl.h is now |
| 6 | wire_format_lite_inl.h .. adjust somehow .. possibly write an email |
| 7 | - rpc protocol should not hardcode method_index (although it's fine |
| 8 | for API to do so) |
| 9 | - BUG? shouldn't enum..by_name[] and enum..by_number[] in the generated-code |
| 10 | be static?? |
lahiker42@gmail.com | 34b2274 | 2011-03-20 02:37:08 +0000 | [diff] [blame] | 11 | - dispatch-within-dispatch protection needed (ie assert that you can't |
| 12 | recursively invoke the main-loop) |
lahiker42@gmail.com | 1f72f1d | 2011-11-12 02:32:22 +0000 | [diff] [blame] | 13 | - uh not sure i like the hash-based situation for required values. |
| 14 | perhaps we need a message-descriptor flag to help out. (Could always use |
| 15 | different hashes and sizes) |
lahiker42 | 6f28ec6 | 2008-08-27 03:51:24 +0000 | [diff] [blame] | 16 | |
| 17 | -------------------- |
| 18 | --- NEEDED TESTS --- |
| 19 | -------------------- |
| 20 | - test: |
lahiker42 | 6026e98 | 2008-08-27 02:14:42 +0000 | [diff] [blame] | 21 | - service method lookups |
| 22 | - out-of-order fields in messages (ie if the number isn't ascending) |
| 23 | - gaps in numbers: check that the number of ranges is correct |
lahiker42 | 6f28ec6 | 2008-08-27 03:51:24 +0000 | [diff] [blame] | 24 | - default values |
lahiker42 | 617dfbe | 2009-03-05 03:57:17 +0000 | [diff] [blame] | 25 | - message unpack alloc failures when allocating new slab |
| 26 | - message unpack alloc failures when allocating unknown field buffers |
lahiker42 | ec4ea96 | 2010-09-01 04:30:30 +0000 | [diff] [blame] | 27 | - packed message corruption. |
| 28 | - meta-todo: get a list of all the unpack errors together to check off |
| 29 | - run gcov |
lahiker42 | bb9e668 | 2008-08-23 20:44:49 +0000 | [diff] [blame] | 30 | |
lahiker42 | 6f28ec6 | 2008-08-27 03:51:24 +0000 | [diff] [blame] | 31 | --------------------- |
| 32 | --- DOCUMENTATION --- |
| 33 | --------------------- |
| 34 | Document: |
lahiker42 | 6f28ec6 | 2008-08-27 03:51:24 +0000 | [diff] [blame] | 35 | - services |
lahiker42 | 2d96d78 | 2008-08-25 17:50:52 +0000 | [diff] [blame] | 36 | - check over documentation again |
lahiker42 | 880b640 | 2008-08-22 22:15:42 +0000 | [diff] [blame] | 37 | |
lahiker42 | 6f28ec6 | 2008-08-27 03:51:24 +0000 | [diff] [blame] | 38 | -------------------------- |
| 39 | --- LOW PRIORITY STUFF --- |
| 40 | -------------------------- |
lahiker42 | 880b640 | 2008-08-22 22:15:42 +0000 | [diff] [blame] | 41 | - support Group (whatever it is) |
lahiker42 | 9b596af | 2010-05-05 12:52:38 +0000 | [diff] [blame] | 42 | - proper support for extensions |
| 43 | - slot for ranges in descriptor |
| 44 | - extends is implemented as c-style function |
| 45 | whose name is built from the package, the base message type-name |
| 46 | and the member. which takes the base message and returns the |
| 47 | value, if it is found in "unknown_values". |
| 48 | boolean package__extension_member_name__get(Message *message, |
| 49 | type *out); |
| 50 | void package__extension_member_name__set_raw(type in, |
| 51 | ProtobufCUnknownValue *to_init); |
lahiker42 | 880b640 | 2008-08-22 22:15:42 +0000 | [diff] [blame] | 52 | |
lahiker42 | 6f28ec6 | 2008-08-27 03:51:24 +0000 | [diff] [blame] | 53 | ------------------------------------ |
| 54 | --- EXTREMELY LOW PRIORITY STUFF --- |
| 55 | ------------------------------------ |
lahiker42 | 880b640 | 2008-08-22 22:15:42 +0000 | [diff] [blame] | 56 | - stop using qsort in the code generator: find some c++ish way to do it |
lahiker42 | 6f28ec6 | 2008-08-27 03:51:24 +0000 | [diff] [blame] | 57 | |
| 58 | ---------------------------------------------- |
| 59 | --- ISSUES WE ARE PROBABLY GOING TO IGNORE --- |
| 60 | ---------------------------------------------- |
| 61 | - strings may not contain NULs |
| 62 | |
| 63 | ------------------------- |
| 64 | --- IDEAS TO CONSIDER --- |
| 65 | ------------------------- |
| 66 | |
lahiker42 | ec4ea96 | 2010-09-01 04:30:30 +0000 | [diff] [blame] | 67 | - optimization: structures without repeated members could skip |
| 68 | the ScannedMember phase |
| 69 | |
| 70 | - optimization: a way to ignore unknown-fields when unpacking |
| 71 | |
| 72 | - optimization: certain functions are not well setup for WORDSIZE==64; |
| 73 | especially the int64 routines are inefficient that way. |
| 74 | The best might be an internal #define WORDSIZE (sizeof(long)*8)" |
| 75 | except w/ a real constant there, one that the preprocessor can use. |
| 76 | I think the functions in protobuf-c.c are already tagged. |
| 77 | |
lahiker42 | 6f28ec6 | 2008-08-27 03:51:24 +0000 | [diff] [blame] | 78 | - lifetime functions for messages: |
lahiker42 | 6f28ec6 | 2008-08-27 03:51:24 +0000 | [diff] [blame] | 79 | message__new() |
| 80 | return a new message using an allocator with standard allocation policy |
| 81 | message__unpack_onto(...) |
| 82 | unpack onto an initialized message |
| 83 | message__clear(...) |
| 84 | clears all allocations, does not free the message itself |
| 85 | message__free(...) |
| 86 | free the message. |
| 87 | [yeah, right: after typing it out, i see it's way too complicated] |
lahiker42 | 480bea9 | 2008-11-30 15:57:52 +0000 | [diff] [blame] | 88 | |
| 89 | - switching to pure C. |
| 90 | - Rewrite the code-generator in C, including the parser. |
| 91 | - This would have the huge advantage that we could use ".proto" files |
| 92 | directly, instead of having to invoke the compilers. |
lahiker42 | ec4ea96 | 2010-09-01 04:30:30 +0000 | [diff] [blame] | 93 | - keep in a separate c file for static linking optimziation purposes |
| 94 | - need alignment tests |
| 95 | - the CAVEATS should discuss our structure-packing assumptions |