IdA1CommandUserSearchBegin.java

package com.io7m.idstore.protocol.admin.cb;

import com.io7m.cedarbridge.runtime.api.CBDeserializerMethod;
import com.io7m.cedarbridge.runtime.api.CBSerializableType;
import com.io7m.cedarbridge.runtime.api.CBSerializationContextType;
import com.io7m.cedarbridge.runtime.api.CBSerializerMethod;
import java.io.IOException;
import java.util.Objects;

/**
 * Start searching for users.
 * @param fieldParameters The search parameters.
 */
public record IdA1CommandUserSearchBegin(
    IdA1UserSearchParameters fieldParameters) implements CBSerializableType, ProtocolIdAv1Type {
  public IdA1CommandUserSearchBegin {
    Objects.requireNonNull(fieldParameters, "fieldParameters");
  }

  /**
   * Serialize a value of type IdA1CommandUserSearchBegin.
   * @param $context The serialization context.
   * @param $x The value to be serialized.
   */
  @CBSerializerMethod
  public static void serialize(final CBSerializationContextType $context,
      final IdA1CommandUserSearchBegin $x) throws IOException {
    // Serialization calls in field order.
    $context.begin("parameters");
    IdA1UserSearchParameters.serialize($context, $x.fieldParameters);
    $context.end("parameters");
  }

  /**
   * Deserialize a value of type IdA1CommandUserSearchBegin.
   * @param $context The serialization context.
   * @return A value of type IdA1CommandUserSearchBegin.
   */
  @CBDeserializerMethod
  public static IdA1CommandUserSearchBegin deserialize(final CBSerializationContextType $context)
      throws IOException {
    // Deserialization calls in field order.
    $context.begin("parameters");
    final var $v0000 = IdA1UserSearchParameters.deserialize($context);
    $context.end("parameters");
    return new IdA1CommandUserSearchBegin($v0000);
  }
}