<commit_before>/*
 * Copyright (C) 1994, Index Data I/S 
 * All rights reserved.
 * <NAME>, <NAME>
 *
 * $Log: proto.c,v $
 * Revision 1.14  1995-03-29 08:06:13  quinn
 * Added a few v3 elements
 *
 * Revision 1.13  1995/03/20  11:26:52  quinn
 * *** empty log message ***
 *
 * Revision 1.12  1995/03/20  09:45:09  quinn
 * Working towards v3
 *
 * Revision 1.11  1995/03/17  10:17:25  quinn
 * Added memory management.
 *
 * Revision 1.10  1995/03/15  11:17:40  quinn
 * Fixed some return-checks from choice.. need better ay to handle those..
 *
 * Revision 1.9  1995/03/15  08:37:06  quinn
 * Fixed protocol bugs.
 *
 * Revision 1.8  1995/03/14  16:59:24  quinn
 * Fixed OPTIONAL flag in attributeelement
 *
 * Revision 1.7  1995/03/07  16:29:33  quinn
 * Added authentication stuff.
 *
 * Revision 1.6  1995/03/01  14:46:03  quinn
 * Fixed protocol bug in 8777query.
 *
 * Revision 1.5  1995/02/14  11:54:22  quinn
 * Fixing include.
 *
 * Revision 1.4  1995/02/10  15:54:30  quinn
 * Small adjustments.
 *
 * Revision 1.3  1995/02/09  15:51:39  quinn
 * Works better now.
 *
 * Revision 1.2  1995/02/06  21:26:07  quinn
 * Repaired this evening's damages..
 *
 * Revision 1.1  1995/02/06  16:44:47  quinn
 * First hack at Z/SR protocol
 *
 */

#include <odr.h>

#include <proto.h>

/* ---------------------- GLOBAL DEFS ------------------- */

int z_ReferenceId(ODR o, Z_ReferenceId **p, int opt)
{
    return odr_implicit(o, odr_octetstring, (Odr_oct**) p, ODR_CONTEXT, 2, opt);
}

int z_DatabaseName(ODR o, Z_DatabaseName **p, int opt)
{
    return odr_implicit(o, odr_visiblestring, (char **) p, ODR_CONTEXT, 105,
	opt);
}

int z_ResultSetId(ODR o, char **p, int opt)
{
    return odr_implicit(o, odr_visiblestring, (char **) p, ODR_CONTEXT, 31,
	opt);
}

int z_UserInformationField(ODR o, Z_UserInformationField **p, int opt)
{
    return odr_explicit(o, odr_external, (Odr_external **)p, ODR_CONTEXT,
    	11, opt);
}

/* ---------------------- INITIALIZE SERVICE ------------------- */

int z_NSRAuthentication(ODR o, Z_NSRAuthentication **p, int opt)
{
    if (!odr_sequence_begin(o, p, sizeof(**p)))
    	return opt;
    return
    	odr_visiblestring(o, &(*p)->user, 0) &&
    	odr_visiblestring(o, &(*p)->password, 0) &&
    	odr_visiblestring(o, &(*p)->account, 0) &&
    	odr_sequence_end(o);
}

int z_IdPass(ODR o, Z_IdPass **p, int opt)
{
    if (!odr_sequence_begin(o, p, sizeof(**p)))
    	return opt;
    return
    	odr_implicit(o, odr_visiblestring, &(*p)->groupId, ODR_CONTEXT, 0, 0) &&
    	odr_implicit(o, odr_visiblestring, &(*p)->userId, ODR_CONTEXT, 1, 0) &&
    	odr_implicit(o, odr_visiblestring, &(*p)->password, ODR_CONTEXT, 2,
	    0) &&
    	odr_sequence_end(o);
}

int z_StrAuthentication(ODR o, char **p, int opt)
{
    return odr_visiblestring(o, p, opt);
}

int z_IdAuthentication(ODR o, Z_IdAuthentication **p, int opt)
{
    static Odr_arm arm[] =
    {
	{-1, -1, -1, Z_IdAuthentication_open, z_StrAuthentication},
	{-1, -1, -1, Z_IdAuthentication_idPass, z_NSRAuthentication},
	{-1, -1, -1, Z_IdAuthentication_anonymous, odr_null},
	{-1, -1, -1, Z_IdAuthentication_other, odr_external},
	{-1, -1, -1, -1, 0}
    };

    if (o->direction == ODR_DECODE)
    	*p = odr_malloc(o, sizeof(**p));

    if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
    	return 1;
    *p = 0;
    return opt && !o->error;
}

int z_InitRequest(ODR o, Z_InitRequest **p, int opt)
{
    Z_InitRequest *pp;

    if (!odr_sequence_begin(o, p, sizeof(**p)))
    	return opt;
    pp = *p;
    return
    	z_ReferenceId(o, &pp->referenceId, 1) &&
    	odr_implicit(o, odr_bitstring, &pp->protocolVersion, ODR_CONTEXT, 
	    3, 0) &&
	odr_implicit(o, odr_bitstring, &pp->options, ODR_CONTEXT, 4, 0) &&
	odr_implicit(o, odr_integer, &pp->preferredMessageSize, ODR_CONTEXT,
	    5, 0) &&
	odr_implicit(o, odr_integer, &pp->maximumRecordSize, ODR_CONTEXT,
	    6, 0) &&
	odr_explicit(o, z_IdAuthentication, &pp->idAuthentication, ODR_CONTEXT,
	    7, 1) &&
	odr_implicit(o, odr_visiblestring, &pp->implementationId, ODR_CONTEXT,
	    110, 1) &&
	odr_implicit(o, odr_visiblestring, &pp->implementationName, ODR_CONTEXT,
	    111, 1) &&
	odr_implicit(o, odr_visiblestring, &pp->implementationVersion,
	    ODR_CONTEXT, 112, 1) &&
	z_UserInformationField(o, &pp->userInformationField, 1) &&
	odr_sequence_end(o);
}

int z_InitResponse(ODR o, Z_InitResponse **p, int opt)
{
    Z_InitResponse *pp;

    if (!odr_sequence_begin(o, p, sizeof(**p)))
    	return opt;
    pp = *p;
    return
    	z_ReferenceId(o, &pp->referenceId, 1) &&
    	odr_implicit(o, odr_bitstring, &pp->protocolVersion, ODR_CONTEXT, 
	    3, 0) &&
	odr_implicit(o, odr_bitstring, &pp->options, ODR_CONTEXT, 4, 0) &&
	odr_implicit(o, odr_integer, &pp->preferredMessageSize, ODR_CONTEXT,
	    5, 0) &&
	odr_implicit(o, odr_integer, &pp->maximumRecordSize, ODR_CONTEXT,
	    6, 0) &&
	odr_implicit(o, odr_bool, &pp->result, ODR_CONTEXT, 12, 0) &&
	odr_implicit(o, odr_visiblestring, &pp->implementationId, ODR_CONTEXT,
	    110, 1) &&
	odr_implicit(o, odr_visiblestring, &pp->implementationName, ODR_CONTEXT,
	    111, 1) &&
	odr_implicit(o, odr_visiblestring, &pp->implementationVersion,
	    ODR_CONTEXT, 112, 1) &&
	z_UserInformationField(o, &pp->userInformationField, 1) &&
	odr_sequence_end(o);
}

/* ------------------------ SEARCH SERVICE ----------------------- */

int z_ElementSetName(ODR o, char **p, int opt)
{
    return odr_implicit(o, odr_visiblestring, (char**) p, ODR_CONTEXT, 103,
    	opt);
}

int z_PreferredRecordSyntax(ODR o, Z_PreferredRecordSyntax **p, int opt)
{
    return odr_implicit(o, odr_oid, (Odr_oid**) p, ODR_CONTEXT, 104, opt);
}

int z_DatabaseSpecificUnit(ODR o, Z_DatabaseSpecificUnit **p, int opt)
{
    if (!odr_sequence_begin(o, p, sizeof(**p)))
    	return opt;
    return
    	z_DatabaseName(o, &(*p)->databaseName, 0) &&
    	z_ElementSetName(o, &(*p)->elementSetName, 0) &&
    	odr_sequence_end(o);
}

int z_DatabaseSpecific(ODR o, Z_DatabaseSpecific **p, int opt)<commit_msg>Added Resource control protocol<commit_after>/*
 * Copyright (C) 1994, Index Data I/S 
 * All rights reserved.
 * <NAME>, <NAME>
 *
 * $Log: proto.c,v $
 * Revision 1.15  1995-03-30 09:08:39  quinn
 * Added Resource control protocol
 *
 * Revision 1.14  1995/03/29  08:06:13  quinn
 * Added a few v3 elements
 *
 * Revision 1.13  1995/03/20  11:26:52  quinn
 * *** empty log message ***
 *
 * Revision 1.12  1995/03/20  09:45:09  quinn
 * Working towards v3
 *
 * Revision 1.11  1995/03/17  10:17:25  quinn
 * Added memory management.
 *
 * Revision 1.10  1995/03/15  11:17:40  quinn
 * Fixed some return-checks from choice.. need better ay to handle those..
 *
 * Revision 1.9  1995/03/15  08:37:06  quinn
 * Fixed protocol bugs.
 *
 * Revision 1.8  1995/03/14  16:59:24  quinn
 * Fixed OPTIONAL flag in attributeelement
 *
 * Revision 1.7  1995/03/07  16:29:33  quinn
 * Added authentication stuff.
 *
 * Revision 1.6  1995/03/01  14:46:03  quinn
 * Fixed protocol bug in 8777query.
 *
 * Revision 1.5  1995/02/14  11:54:22  quinn
 * Fixing include.
 *
 * Revision 1.4  1995/02/10  15:54:30  quinn
 * Small adjustments.
 *
 * Revision 1.3  1995/02/09  15:51:39  quinn
 * Works better now.
 *
 * Revision 1.2  1995/02/06  21:26:07  quinn
 * Repaired this evening's damages..
 *
 * Revision 1.1  1995/02/06  16:44:47  quinn
 * First hack at Z/SR protocol
 *
 */

#include <odr.h>

#include <proto.h>

/* ---------------------- GLOBAL DEFS ------------------- */

int z_ReferenceId(ODR o, Z_ReferenceId **p, int opt)
{
    return odr_implicit(o, odr_octetstring, (Odr_oct**) p, ODR_CONTEXT, 2, opt);
}

int z_DatabaseName(ODR o, Z_DatabaseName **p, int opt)
{
    return odr_implicit(o, odr_visiblestring, (char **) p, ODR_CONTEXT, 105,
	opt);
}

int z_ResultSetId(ODR o, char **p, int opt)
{
    return odr_implicit(o, odr_visiblestring, (char **) p, ODR_CONTEXT, 31,
	opt);
}

int z_UserInformationField(ODR o, Z_UserInformationField **p, int opt)
{
    return odr_explicit(o, odr_external, (Odr_external **)p, ODR_CONTEXT,
    	11, opt);
}

/* ---------------------- INITIALIZE SERVICE ------------------- */

int z_NSRAuthentication(ODR o, Z_NSRAuthentication **p, int opt)
{
    if (!odr_sequence_begin(o, p, sizeof(**p)))
    	return opt;
    return
    	odr_visiblestring(o, &(*p)->user, 0) &&
    	odr_visiblestring(o, &(*p)->password, 0) &&
    	odr_visiblestring(o, &(*p)->account, 0) &&
    	odr_sequence_end(o);
}

int z_IdPass(ODR o, Z_IdPass **p, int opt)
{
    if (!odr_sequence_begin(o, p, sizeof(**p)))
    	return opt;
    return
    	odr_implicit(o, odr_visiblestring, &(*p)->groupId, ODR_CONTEXT, 0, 0) &&
    	odr_implicit(o, odr_visiblestring, &(*p)->userId, ODR_CONTEXT, 1, 0) &&
    	odr_implicit(o, odr_visiblestring, &(*p)->password, ODR_CONTEXT, 2,
	    0) &&
    	odr_sequence_end(o);
}

int z_StrAuthentication(ODR o, char **p, int opt)
{
    return odr_visiblestring(o, p, opt);
}

int z_IdAuthentication(ODR o, Z_IdAuthentication **p, int opt)
{
    static Odr_arm arm[] =
    {
	{-1, -1, -1, Z_IdAuthentication_open, z_StrAuthentication},
	{-1, -1, -1, Z_IdAuthentication_idPass, z_NSRAuthentication},
	{-1, -1, -1, Z_IdAuthentication_anonymous, odr_null},
	{-1, -1, -1, Z_IdAuthentication_other, odr_external},
	{-1, -1, -1, -1, 0}
    };

    if (o->direction == ODR_DECODE)
    	*p = odr_malloc(o, sizeof(**p));

    if (odr_choice(o, arm, &(*p)->u, &(*p)->which))
    	return 1;
    *p = 0;
    return opt && !o->error;
}

int z_InitRequest(ODR o, Z_InitRequest **p, int opt)
{
    Z_InitRequest *pp;

    if (!odr_sequence_begin(o, p, sizeof(**p)))
    	return opt;
    pp = *p;
    return
    	z_ReferenceId(o, &pp->referenceId, 1) &&
    	odr_implicit(o, odr_bitstring, &pp->protocolVersion, ODR_CONTEXT, 
	    3, 0) &&
	odr_implicit(o, odr_bitstring, &pp->options, ODR_CONTEXT, 4, 0) &&
	odr_implicit(o, odr_integer, &pp->preferredMessageSize, ODR_CONTEXT,
	    5, 0) &&
	odr_implicit(o, odr_integer, &pp->maximumRecordSize, ODR_CONTEXT,
	    6, 0) &&
	odr_explicit(o, z_IdAuthentication, &pp->idAuthentication, ODR_CONTEXT,
	    7, 1) &&
	odr_implicit(o, odr_visiblestring, &pp->implementationId, ODR_CONTEXT,
	    110, 1) &&
	odr_implicit(o, odr_visiblestring, &pp->implementationName, ODR_CONTEXT,
	    111, 1) &&
	odr_implicit(o, odr_visiblestring, &pp->implementationVersion,
	    ODR_CONTEXT, 112, 1) &&
	z_UserInformationField(o, &pp->userInformationField, 1) &&
	odr_sequence_end(o);
}

int z_InitResponse(ODR o, Z_InitResponse **p, int opt)
{
    Z_InitResponse *pp;

    if (!odr_sequence_begin(o, p, sizeof(**p)))
    	return opt;
    pp = *p;
    return
    	z_ReferenceId(o, &pp->referenceId, 1) &&
    	odr_implicit(o, odr_bitstring, &pp->protocolVersion, ODR_CONTEXT, 
	    3, 0) &&
	odr_implicit(o, odr_bitstring, &pp->options, ODR_CONTEXT, 4, 0) &&
	odr_implicit(o, odr_integer, &pp->preferredMessageSize, ODR_CONTEXT,
	    5, 0) &&
	odr_implicit(o, odr_integer, &pp->maximumRecordSize, ODR_CONTEXT,
	    6, 0) &&
	odr_implicit(o, odr_bool, &pp->result, ODR_CONTEXT, 12, 0) &&
	odr_implicit(o, odr_visiblestring, &pp->implementationId, ODR_CONTEXT,
	    110, 1) &&
	odr_implicit(o, odr_visiblestring, &pp->implementationName, ODR_CONTEXT,
	    111, 1) &&
	odr_implicit(o, odr_visiblestring, &pp->implementationVersion,
	    ODR_CONTEXT, 112, 1) &&
	z_UserInformationField(o, &pp->userInformationField, 1) &&
	odr_sequence_end(o);
}

/* ------------------ RESOURCE CONTROL ----------------*/

int z_TriggerResourceControlRequest(ODR o, Z_TriggerResourceControlRequest **p,
				    int opt)
{
    if (!odr_sequence_begin(o, p, sizeof(**p)))
    	return opt;
    return
    	z_ReferenceId(o, &(*p)->referenceId, 1) &&
	odr_implicit(o, odr_integer, &(*p)->requestedAction, ODR_CONTEXT,
	    46, 0) &&
	odr_implicit(o, odr_oid, &(*p)->prefResourceReportFormat,
	    ODR_CONTEXT, 47, 1) &&
	odr_implicit(o, odr_bool, &(*p)->resultSetWanted, ODR_CONTEXT,
	    48, 1) &&
	odr_sequence_end(o);
}

int z_ResourceControlRequest(ODR o, Z_ResourceControlRequest **p, int opt)
{
    if (!odr_sequence_begin(o, p, sizeof(**p)))
    	return opt;
    return
    	z_ReferenceId(o, &(*p)->referenceId, 1) &&
	odr_implicit(o, odr_bool, &(*p)->suspendedFlag, ODR_CONTEXT, 39, 1)&&
	odr_explicit(o, odr_external, &(*p)->resourceReport, ODR_CONTEXT,
	    40, 1) &&
	odr_implicit(o, odr_integer, &(*p)->partialResultsAvailable,
	    ODR_CONTEXT, 41, 1) &&
	odr_implicit(o, odr_bool, &(*p)->responseRequired, ODR_CONTEXT,
	    42, 0) &&
	odr_implicit(o, odr_bool, &(*p)->triggeredRequestFlag,
	    ODR_CONTEXT, 43, 1) &&
	odr_sequence_end(o);
}

int z_ResourceControlResponse(ODR o, Z_ResourceControlResponse **p, int opt)
{
    if (!odr_sequence_begin(o, p, sizeof(**p)))
    	return opt;
    return
    	z_ReferenceId(o, &(*p)->referenceId, 1) &&
	odr_implicit(o, odr_bool, &(*p)->continueFlag, ODR_CONTEXT, 44, 0) &&
	odr_implicit(o, odr_bool, &(*p)->resultSetWanted, ODR_CONTEXT,
	    45, 1) &&
	odr_sequence_end(o);
}

/* ------------------------ SEARCH SERVICE ----------------------- */

int z_ElementSetName(ODR o, char **p, int opt)
{
    return odr_implicit(o, odr_visiblestring, (char**) p, ODR_CONTEXT, 103,
    	opt);
}

int z_PreferredRecordSyntax(ODR o, Z_PreferredRecordSyntax **p, int opt)
{
    return odr_implicit(o, odr_oid, (Odr_oid**) p, ODR_CONTEXT, 104, opt);
}

int z_DatabaseSpecificUnit(ODR o, Z_DatabaseSpecificUnit **p, int opt)
{
    if (!odr_sequence_begin(o, p, sizeof(**p)))
    	return opt;
    return
    	z_DatabaseName(o, &(*p)->databaseName, 0) &&
    	z_ElementSetName(o, &(*p)->elementSetName, 0) &&
    	odr_sequence_end(o);
}

int z_DatabaseSpecific(ODR o, Z_DatabaseSpecific **p, int opt)
{'fraction_non_alphanumeric': 0.1708406561218512, 'fraction_numerical': 0.05228471001757469, 'mean_word_length': 3.501318391562294, 'pattern_counts': {'":': 0, '<': 11, '<?xml version=': 0, '>': 88, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2163665', 'n_tokens_mistral': 6090, 'n_tokens_neox': 5562, 'n_words': 1199}