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"
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 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_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);
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_protoCreateRequest(void * _this, TR_Socket remote)
TR_protoCreateRequest(void * _this, TR_Socket remote, ...)
{
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) {
callret->remote = remote;
}
va_end(params);
return callret;
}
TR_ProtoMessage
TR_protoCreateResponse(void * _this, TR_Socket remote)
TR_protoCreateResponse(void * _this, TR_Socket remote, ...)
{
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) {
callret->remote = remote;
}
va_end(params);
return callret;
}

Loading…
Cancel
Save