Implement user impersonation as specified. See the parent ticket for more information and reference to the Go SDK which has already been completed.
From internal discussions, note that we will need to perform the following:
- Review the User Impersonation SDK-RFC on this topic to be sure we're being consistent with the RFC and Go implementation.
- Refactor the framing extras (flexible extras) logic to support the new user impersonation framing extra.
- Also note that any services using HTTP will need to pass the new cb-on-behalf-of header value. See the Go SDK implementation for reference if needed.
- We will introduce internal functions (not shown on the public interface) for each of the affected command functions based on a consistent pattern using onbehalfof. For example, for a Query request command, it will be: lcb_cmdquery_onbehalfof(lcb_CMDQUERY *cmd, const char *user, size_t user_len) and for a KV store command it would be lcb_cmdstore_onbehalfof(lcb_CMDSTORE *cmd, const char *user, size_t user_len).