diff --git a/include/tr/interface/protocol.h b/include/tr/interface/protocol.h index 364241c..39982a6 100644 --- a/include/tr/interface/protocol.h +++ b/include/tr/interface/protocol.h @@ -47,7 +47,9 @@ TR_INTERFACE(TR_Protocol) { }; TR_ProtoMessage TR_protoCreateMessage(void *, TR_Socket); +TR_ProtoMessage TR_vprotoCreateRequest(void *, TR_Socket, va_list*); TR_ProtoMessage TR_protoCreateRequest(void *, TR_Socket, ...); +TR_ProtoMessage TR_vprotoCreateResponse(void *, TR_Socket, va_list*); TR_ProtoMessage TR_protoCreateResponse(void *, TR_Socket, ...); size_t TR_protoParse(void *, TR_ProtoMessage, TR_RemoteData); TR_RemoteData TR_protoCompose(void *, TR_ProtoMessage); diff --git a/src/i_protocol.c b/src/i_protocol.c index d650837..7f6b37e 100644 --- a/src/i_protocol.c +++ b/src/i_protocol.c @@ -42,34 +42,46 @@ TR_protoCreateMessage(void * _this, TR_Socket remote) } TR_ProtoMessage -TR_protoCreateRequest(void * _this, TR_Socket remote, ...) +TR_vprotoCreateRequest(void * _this, TR_Socket remote, va_list * params) { TR_ProtoMessage callret; - va_list params; - - va_start(params, remote); - TR_RETCALL(_this, TR_Protocol, createRequest, callret, ¶ms); + TR_RETCALL(_this, TR_Protocol, createRequest, callret, params); if (callret != NULL) { callret->remote = remote; } - va_end(params); - return callret; } TR_ProtoMessage -TR_protoCreateResponse(void * _this, TR_Socket remote, ...) +TR_protoCreateRequest(void * _this, TR_Socket remote, ...) { TR_ProtoMessage callret; va_list params; - va_start(params, remote); + callret = TR_vprotoCreateRequest(_this, remote, ¶ms); + va_end(params); + return callret; +} + +TR_ProtoMessage +TR_vprotoCreateResponse(void * _this, TR_Socket remote, va_list * params) +{ + TR_ProtoMessage callret; TR_RETCALL(_this, TR_Protocol, createResponse, callret, ¶ms); if (callret != NULL) { callret->remote = remote; } - va_end(params); + return callret; +} +TR_ProtoMessage +TR_protoCreateResponse(void * _this, TR_Socket remote, ...) +{ + TR_ProtoMessage callret; + va_list params; + va_start(params, remote); + callret = TR_vprotoCreateResponse(_this, remote, ¶ms); + va_end(params); return callret; }