Browse Source

allow variable arguments for response and request generation

1.0.0
Georg Hopp 11 years ago
parent
commit
0de9022861
  1. 8
      include/tr/interface/protocol.h
  2. 18
      src/i_protocol.c

8
include/tr/interface/protocol.h

@ -32,8 +32,8 @@
#include "tr/proto_message.h" #include "tr/proto_message.h"
typedef TR_ProtoMessage (* fptr_TR_protoCreateMessage)(void *); typedef TR_ProtoMessage (* fptr_TR_protoCreateMessage)(void *);
typedef TR_ProtoMessage (* fptr_TR_protoCreateRequest)(void *);
typedef TR_ProtoMessage (* fptr_TR_protoCreateResponse)(void *);
typedef TR_ProtoMessage (* fptr_TR_protoCreateRequest)(void *, va_list *);
typedef TR_ProtoMessage (* fptr_TR_protoCreateResponse)(void *, va_list *);
typedef TR_RemoteData (* fptr_TR_protoCompose)(void *, TR_ProtoMessage); typedef TR_RemoteData (* fptr_TR_protoCompose)(void *, TR_ProtoMessage);
typedef size_t (* fptr_TR_protoParse)(void *, TR_ProtoMessage, TR_RemoteData); typedef size_t (* fptr_TR_protoParse)(void *, TR_ProtoMessage, TR_RemoteData);
@ -47,8 +47,8 @@ TR_INTERFACE(TR_Protocol) {
}; };
TR_ProtoMessage TR_protoCreateMessage(void *, TR_Socket); TR_ProtoMessage TR_protoCreateMessage(void *, TR_Socket);
TR_ProtoMessage TR_protoCreateRequest(void *, TR_Socket);
TR_ProtoMessage TR_protoCreateResponse(void *, TR_Socket);
TR_ProtoMessage TR_protoCreateRequest(void *, TR_Socket, ...);
TR_ProtoMessage TR_protoCreateResponse(void *, TR_Socket, ...);
size_t TR_protoParse(void *, TR_ProtoMessage, TR_RemoteData); size_t TR_protoParse(void *, TR_ProtoMessage, TR_RemoteData);
TR_RemoteData TR_protoCompose(void *, TR_ProtoMessage); TR_RemoteData TR_protoCompose(void *, TR_ProtoMessage);

18
src/i_protocol.c

@ -42,24 +42,34 @@ TR_protoCreateMessage(void * _this, TR_Socket remote)
} }
TR_ProtoMessage TR_ProtoMessage
TR_protoCreateRequest(void * _this, TR_Socket remote)
TR_protoCreateRequest(void * _this, TR_Socket remote, ...)
{ {
TR_ProtoMessage callret; TR_ProtoMessage callret;
TR_RETCALL(_this, TR_Protocol, createRequest, callret);
va_list params;
va_start(params, remote);
TR_RETCALL(_this, TR_Protocol, createRequest, callret, params);
if (callret != NULL) { if (callret != NULL) {
callret->remote = remote; callret->remote = remote;
} }
va_end(params);
return callret; return callret;
} }
TR_ProtoMessage TR_ProtoMessage
TR_protoCreateResponse(void * _this, TR_Socket remote)
TR_protoCreateResponse(void * _this, TR_Socket remote, ...)
{ {
TR_ProtoMessage callret; TR_ProtoMessage callret;
TR_RETCALL(_this, TR_Protocol, createResponse, callret);
va_list params;
va_start(params, remote);
TR_RETCALL(_this, TR_Protocol, createResponse, callret, params);
if (callret != NULL) { if (callret != NULL) {
callret->remote = remote; callret->remote = remote;
} }
va_end(params);
return callret; return callret;
} }

Loading…
Cancel
Save