Re: [PATCH v5 11/40] odb-helper: add odb_helper_init() to send 'init' instruction

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> On 03 Aug 2017, at 10:18, Christian Couder <christian.couder@xxxxxxxxx> wrote:
> 
> Let's add an odb_helper_init() function to send an 'init'
> instruction to the helpers. This 'init' instruction is
> especially useful to get the capabilities that are supported
> by the helpers.
> 
> So while at it, let's also add a parse_capabilities()
> function to parse them and a supported_capabilities
> variable in struct odb_helper to store them.
> 
> Signed-off-by: Christian Couder <chriscool@xxxxxxxxxxxxx>
> ---
> ...
> 
> +static void parse_capabilities(char *cap_buf,
> +			       unsigned int *supported_capabilities,
> +			       const char *process_name)
> +{
> +	struct string_list cap_list = STRING_LIST_INIT_NODUP;
> +
> +	string_list_split_in_place(&cap_list, cap_buf, '=', 1);
> +
> +	if (cap_list.nr == 2 && !strcmp(cap_list.items[0].string, "capability")) {
> +		const char *cap_name = cap_list.items[1].string;
> +
> +		if (!strcmp(cap_name, "get_git_obj")) {
> +			*supported_capabilities |= ODB_HELPER_CAP_GET_GIT_OBJ;
> +		} else if (!strcmp(cap_name, "get_raw_obj")) {
> +			*supported_capabilities |= ODB_HELPER_CAP_GET_RAW_OBJ;
> +		} else if (!strcmp(cap_name, "get_direct")) {
> +			*supported_capabilities |= ODB_HELPER_CAP_GET_DIRECT;
> +		} else if (!strcmp(cap_name, "put_git_obj")) {
> +			*supported_capabilities |= ODB_HELPER_CAP_PUT_GIT_OBJ;
> +		} else if (!strcmp(cap_name, "put_raw_obj")) {
> +			*supported_capabilities |= ODB_HELPER_CAP_PUT_RAW_OBJ;
> +		} else if (!strcmp(cap_name, "put_direct")) {
> +			*supported_capabilities |= ODB_HELPER_CAP_PUT_DIRECT;
> +		} else if (!strcmp(cap_name, "have")) {
> +			*supported_capabilities |= ODB_HELPER_CAP_HAVE;
> +		} else {
> +			warning("external process '%s' requested unsupported read-object capability '%s'",
> +				process_name, cap_name);
> +		}

In 1514c8ed ("convert: refactor capabilities negotiation", 2017-06-30) I introduced
a simpler version of the capabilities negotiation. Maybe useful for you here, too? 

- Lars



[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux