Hello,Paolo and Stefanha
  In order to resolve OOM issue, I am trying wrap all APIs using
sunrpc, need some suggestion before coding.

  There are some different way to implement, not sure which would be
better:
  1 keep client as thin as possible, client stores opaque pointer used
in server side, for eg, QBlockContext *ctx, client only get a pointer
pointing to the address where server stores really the object. This
have risk when server/client crash and reconnect.
  2 client and server maintains index for QBlockContext and QBlockState.
  3 thick client and server layer, expose all structure details in .x
file, each API have a correspond rpc call. .x file may be complex.
  4 define a custom protocol on XDR, like libvirt, this may need many
code in server/client side.

  also with method 1-3, Consider wrapping following API:
int qb_context_new(QBlockContext **context);

  The parameter context is a pointer that will be modified, it seems
sunrpc does not transfer back modified parameter by server to client, so
I need to define a structure as
struct qb_context_new_ret {
  int ret;
  int opaque_len;
  char *opaque_val;
}
and use that as rpc call's return structure. In this way each API
wrapped need a new defined internal structure make things complicate.
so I am wondering if there is a better way to do it.






Reply via email to