Commit 0de902286156e4b44c04f39dfe6bbc731dea0455

Authored by Georg Hopp
1 parent e3ca74d8

allow variable arguments for response and request generation

@@ -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