Commit 0de902286156e4b44c04f39dfe6bbc731dea0455
1 parent
e3ca74d8
allow variable arguments for response and request generation
Showing
2 changed files
with
18 additions
and
8 deletions
| @@ -32,8 +32,8 @@ | @@ -32,8 +32,8 @@ | ||
| 32 | #include "tr/proto_message.h" | 32 | #include "tr/proto_message.h" |
| 33 | 33 | ||
| 34 | typedef TR_ProtoMessage (* fptr_TR_protoCreateMessage)(void *); | 34 | typedef TR_ProtoMessage (* fptr_TR_protoCreateMessage)(void *); |
| 35 | -typedef TR_ProtoMessage (* fptr_TR_protoCreateRequest)(void *); | ||
| 36 | -typedef TR_ProtoMessage (* fptr_TR_protoCreateResponse)(void *); | 35 | +typedef TR_ProtoMessage (* fptr_TR_protoCreateRequest)(void *, va_list *); |
| 36 | +typedef TR_ProtoMessage (* fptr_TR_protoCreateResponse)(void *, va_list *); | ||
| 37 | typedef TR_RemoteData (* fptr_TR_protoCompose)(void *, TR_ProtoMessage); | 37 | typedef TR_RemoteData (* fptr_TR_protoCompose)(void *, TR_ProtoMessage); |
| 38 | typedef size_t (* fptr_TR_protoParse)(void *, TR_ProtoMessage, TR_RemoteData); | 38 | typedef size_t (* fptr_TR_protoParse)(void *, TR_ProtoMessage, TR_RemoteData); |
| 39 | 39 | ||
| @@ -47,8 +47,8 @@ TR_INTERFACE(TR_Protocol) { | @@ -47,8 +47,8 @@ TR_INTERFACE(TR_Protocol) { | ||
| 47 | }; | 47 | }; |
| 48 | 48 | ||
| 49 | TR_ProtoMessage TR_protoCreateMessage(void *, TR_Socket); | 49 | TR_ProtoMessage TR_protoCreateMessage(void *, TR_Socket); |
| 50 | -TR_ProtoMessage TR_protoCreateRequest(void *, TR_Socket); | ||
| 51 | -TR_ProtoMessage TR_protoCreateResponse(void *, TR_Socket); | 50 | +TR_ProtoMessage TR_protoCreateRequest(void *, TR_Socket, ...); |
| 51 | +TR_ProtoMessage TR_protoCreateResponse(void *, TR_Socket, ...); | ||
| 52 | size_t TR_protoParse(void *, TR_ProtoMessage, TR_RemoteData); | 52 | size_t TR_protoParse(void *, TR_ProtoMessage, TR_RemoteData); |
| 53 | TR_RemoteData TR_protoCompose(void *, TR_ProtoMessage); | 53 | TR_RemoteData TR_protoCompose(void *, TR_ProtoMessage); |
| 54 | 54 |
| @@ -42,24 +42,34 @@ TR_protoCreateMessage(void * _this, TR_Socket remote) | @@ -42,24 +42,34 @@ TR_protoCreateMessage(void * _this, TR_Socket remote) | ||
| 42 | } | 42 | } |
| 43 | 43 | ||
| 44 | TR_ProtoMessage | 44 | TR_ProtoMessage |
| 45 | -TR_protoCreateRequest(void * _this, TR_Socket remote) | 45 | +TR_protoCreateRequest(void * _this, TR_Socket remote, ...) |
| 46 | { | 46 | { |
| 47 | TR_ProtoMessage callret; | 47 | TR_ProtoMessage callret; |
| 48 | - TR_RETCALL(_this, TR_Protocol, createRequest, callret); | 48 | + va_list params; |
| 49 | + | ||
| 50 | + va_start(params, remote); | ||
| 51 | + TR_RETCALL(_this, TR_Protocol, createRequest, callret, params); | ||
| 49 | if (callret != NULL) { | 52 | if (callret != NULL) { |
| 50 | callret->remote = remote; | 53 | callret->remote = remote; |
| 51 | } | 54 | } |
| 55 | + va_end(params); | ||
| 56 | + | ||
| 52 | return callret; | 57 | return callret; |
| 53 | } | 58 | } |
| 54 | 59 | ||
| 55 | TR_ProtoMessage | 60 | TR_ProtoMessage |
| 56 | -TR_protoCreateResponse(void * _this, TR_Socket remote) | 61 | +TR_protoCreateResponse(void * _this, TR_Socket remote, ...) |
| 57 | { | 62 | { |
| 58 | TR_ProtoMessage callret; | 63 | TR_ProtoMessage callret; |
| 59 | - TR_RETCALL(_this, TR_Protocol, createResponse, callret); | 64 | + va_list params; |
| 65 | + | ||
| 66 | + va_start(params, remote); | ||
| 67 | + TR_RETCALL(_this, TR_Protocol, createResponse, callret, params); | ||
| 60 | if (callret != NULL) { | 68 | if (callret != NULL) { |
| 61 | callret->remote = remote; | 69 | callret->remote = remote; |
| 62 | } | 70 | } |
| 71 | + va_end(params); | ||
| 72 | + | ||
| 63 | return callret; | 73 | return callret; |
| 64 | } | 74 | } |
| 65 | 75 |
Please
register
or
login
to post a comment