<?php
# Generated by the protocol buffer compiler.  DO NOT EDIT!
# source: protos/ydb_coordination.proto

namespace Ydb\Coordination;

use Google\Protobuf\Internal\GPBType;
use Google\Protobuf\Internal\RepeatedField;
use Google\Protobuf\Internal\GPBUtil;

/**
 **
 * Session response message sent from server to client
 *
 * Generated from protobuf message <code>Ydb.Coordination.SessionResponse</code>
 */
class SessionResponse extends \Google\Protobuf\Internal\Message
{
    protected $response;

    /**
     * Constructor.
     *
     * @param array $data {
     *     Optional. Data for populating the Message object.
     *
     *     @type \Ydb\Coordination\SessionResponse\PingPong $ping
     *     @type \Ydb\Coordination\SessionResponse\PingPong $pong
     *     @type \Ydb\Coordination\SessionResponse\Failure $failure
     *     @type \Ydb\Coordination\SessionResponse\SessionStarted $session_started
     *     @type \Ydb\Coordination\SessionResponse\SessionStopped $session_stopped
     *     @type \Ydb\Coordination\Unsupported $unsupported_6
     *     @type \Ydb\Coordination\Unsupported $unsupported_7
     *     @type \Ydb\Coordination\SessionResponse\AcquireSemaphorePending $acquire_semaphore_pending
     *     @type \Ydb\Coordination\SessionResponse\AcquireSemaphoreResult $acquire_semaphore_result
     *     @type \Ydb\Coordination\SessionResponse\ReleaseSemaphoreResult $release_semaphore_result
     *     @type \Ydb\Coordination\SessionResponse\DescribeSemaphoreResult $describe_semaphore_result
     *     @type \Ydb\Coordination\SessionResponse\DescribeSemaphoreChanged $describe_semaphore_changed
     *     @type \Ydb\Coordination\SessionResponse\CreateSemaphoreResult $create_semaphore_result
     *     @type \Ydb\Coordination\SessionResponse\UpdateSemaphoreResult $update_semaphore_result
     *     @type \Ydb\Coordination\SessionResponse\DeleteSemaphoreResult $delete_semaphore_result
     *     @type \Ydb\Coordination\Unsupported $unsupported_16
     *     @type \Ydb\Coordination\Unsupported $unsupported_17
     *     @type \Ydb\Coordination\Unsupported $unsupported_18
     * }
     */
    public function __construct($data = NULL) {
        \GPBMetadata\Protos\YdbCoordination::initOnce();
        parent::__construct($data);
    }

    /**
     * Generated from protobuf field <code>.Ydb.Coordination.SessionResponse.PingPong ping = 1;</code>
     * @return \Ydb\Coordination\SessionResponse\PingPong|null
     */
    public function getPing()
    {
        return $this->readOneof(1);
    }

    public function hasPing()
    {
        return $this->hasOneof(1);
    }

    /**
     * Generated from protobuf field <code>.Ydb.Coordination.SessionResponse.PingPong ping = 1;</code>
     * @param \Ydb\Coordination\SessionResponse\PingPong $var
     * @return $this
     */
    public function setPing($var)
    {
        GPBUtil::checkMessage($var, \Ydb\Coordination\SessionResponse\PingPong::class);
        $this->writeOneof(1, $var);

        return $this;
    }

    /**
     * Generated from protobuf field <code>.Ydb.Coordination.SessionResponse.PingPong pong = 2;</code>
     * @return \Ydb\Coordination\SessionResponse\PingPong|null
     */
    public function getPong()
    {
        return $this->readOneof(2);
    }

    public function hasPong()
    {
        return $this->hasOneof(2);
    }

    /**
     * Generated from protobuf field <code>.Ydb.Coordination.SessionResponse.PingPong pong = 2;</code>
     * @param \Ydb\Coordination\SessionResponse\PingPong $var
     * @return $this
     */
    public function setPong($var)
    {
        GPBUtil::checkMessage($var, \Ydb\Coordination\SessionResponse\PingPong::class);
        $this->writeOneof(2, $var);

        return $this;
    }

    /**
     * Generated from protobuf field <code>.Ydb.Coordination.SessionResponse.Failure failure = 3;</code>
     * @return \Ydb\Coordination\SessionResponse\Failure|null
     */
    public function getFailure()
    {
        return $this->readOneof(3);
    }

    public function hasFailure()
    {
        return $this->hasOneof(3);
    }

    /**
     * Generated from protobuf field <code>.Ydb.Coordination.SessionResponse.Failure failure = 3;</code>
     * @param \Ydb\Coordination\SessionResponse\Failure $var
     * @return $this
     */
    public function setFailure($var)
    {
        GPBUtil::checkMessage($var, \Ydb\Coordination\SessionResponse\Failure::class);
        $this->writeOneof(3, $var);

        return $this;
    }

    /**
     * Generated from protobuf field <code>.Ydb.Coordination.SessionResponse.SessionStarted session_started = 4;</code>
     * @return \Ydb\Coordination\SessionResponse\SessionStarted|null
     */
    public function getSessionStarted()
    {
        return $this->readOneof(4);
    }

    public function hasSessionStarted()
    {
        return $this->hasOneof(4);
    }

    /**
     * Generated from protobuf field <code>.Ydb.Coordination.SessionResponse.SessionStarted session_started = 4;</code>
     * @param \Ydb\Coordination\SessionResponse\SessionStarted $var
     * @return $this
     */
    public function setSessionStarted($var)
    {
        GPBUtil::checkMessage($var, \Ydb\Coordination\SessionResponse\SessionStarted::class);
        $this->writeOneof(4, $var);

        return $this;
    }

    /**
     * Generated from protobuf field <code>.Ydb.Coordination.SessionResponse.SessionStopped session_stopped = 5;</code>
     * @return \Ydb\Coordination\SessionResponse\SessionStopped|null
     */
    public function getSessionStopped()
    {
        return $this->readOneof(5);
    }

    public function hasSessionStopped()
    {
        return $this->hasOneof(5);
    }

    /**
     * Generated from protobuf field <code>.Ydb.Coordination.SessionResponse.SessionStopped session_stopped = 5;</code>
     * @param \Ydb\Coordination\SessionResponse\SessionStopped $var
     * @return $this
     */
    public function setSessionStopped($var)
    {
        GPBUtil::checkMessage($var, \Ydb\Coordination\SessionResponse\SessionStopped::class);
        $this->writeOneof(5, $var);

        return $this;
    }

    /**
     * Generated from protobuf field <code>.Ydb.Coordination.Unsupported unsupported_6 = 6;</code>
     * @return \Ydb\Coordination\Unsupported|null
     */
    public function getUnsupported6()
    {
        return $this->readOneof(6);
    }

    public function hasUnsupported6()
    {
        return $this->hasOneof(6);
    }

    /**
     * Generated from protobuf field <code>.Ydb.Coordination.Unsupported unsupported_6 = 6;</code>
     * @param \Ydb\Coordination\Unsupported $var
     * @return $this
     */
    public function setUnsupported6($var)
    {
        GPBUtil::checkMessage($var, \Ydb\Coordination\Unsupported::class);
        $this->writeOneof(6, $var);

        return $this;
    }

    /**
     * Generated from protobuf field <code>.Ydb.Coordination.Unsupported unsupported_7 = 7;</code>
     * @return \Ydb\Coordination\Unsupported|null
     */
    public function getUnsupported7()
    {
        return $this->readOneof(7);
    }

    public function hasUnsupported7()
    {
        return $this->hasOneof(7);
    }

    /**
     * Generated from protobuf field <code>.Ydb.Coordination.Unsupported unsupported_7 = 7;</code>
     * @param \Ydb\Coordination\Unsupported $var
     * @return $this
     */
    public function setUnsupported7($var)
    {
        GPBUtil::checkMessage($var, \Ydb\Coordination\Unsupported::class);
        $this->writeOneof(7, $var);

        return $this;
    }

    /**
     * Generated from protobuf field <code>.Ydb.Coordination.SessionResponse.AcquireSemaphorePending acquire_semaphore_pending = 8;</code>
     * @return \Ydb\Coordination\SessionResponse\AcquireSemaphorePending|null
     */
    public function getAcquireSemaphorePending()
    {
        return $this->readOneof(8);
    }

    public function hasAcquireSemaphorePending()
    {
        return $this->hasOneof(8);
    }

    /**
     * Generated from protobuf field <code>.Ydb.Coordination.SessionResponse.AcquireSemaphorePending acquire_semaphore_pending = 8;</code>
     * @param \Ydb\Coordination\SessionResponse\AcquireSemaphorePending $var
     * @return $this
     */
    public function setAcquireSemaphorePending($var)
    {
        GPBUtil::checkMessage($var, \Ydb\Coordination\SessionResponse\AcquireSemaphorePending::class);
        $this->writeOneof(8, $var);

        return $this;
    }

    /**
     * Generated from protobuf field <code>.Ydb.Coordination.SessionResponse.AcquireSemaphoreResult acquire_semaphore_result = 9;</code>
     * @return \Ydb\Coordination\SessionResponse\AcquireSemaphoreResult|null
     */
    public function getAcquireSemaphoreResult()
    {
        return $this->readOneof(9);
    }

    public function hasAcquireSemaphoreResult()
    {
        return $this->hasOneof(9);
    }

    /**
     * Generated from protobuf field <code>.Ydb.Coordination.SessionResponse.AcquireSemaphoreResult acquire_semaphore_result = 9;</code>
     * @param \Ydb\Coordination\SessionResponse\AcquireSemaphoreResult $var
     * @return $this
     */
    public function setAcquireSemaphoreResult($var)
    {
        GPBUtil::checkMessage($var, \Ydb\Coordination\SessionResponse\AcquireSemaphoreResult::class);
        $this->writeOneof(9, $var);

        return $this;
    }

    /**
     * Generated from protobuf field <code>.Ydb.Coordination.SessionResponse.ReleaseSemaphoreResult release_semaphore_result = 10;</code>
     * @return \Ydb\Coordination\SessionResponse\ReleaseSemaphoreResult|null
     */
    public function getReleaseSemaphoreResult()
    {
        return $this->readOneof(10);
    }

    public function hasReleaseSemaphoreResult()
    {
        return $this->hasOneof(10);
    }

    /**
     * Generated from protobuf field <code>.Ydb.Coordination.SessionResponse.ReleaseSemaphoreResult release_semaphore_result = 10;</code>
     * @param \Ydb\Coordination\SessionResponse\ReleaseSemaphoreResult $var
     * @return $this
     */
    public function setReleaseSemaphoreResult($var)
    {
        GPBUtil::checkMessage($var, \Ydb\Coordination\SessionResponse\ReleaseSemaphoreResult::class);
        $this->writeOneof(10, $var);

        return $this;
    }

    /**
     * Generated from protobuf field <code>.Ydb.Coordination.SessionResponse.DescribeSemaphoreResult describe_semaphore_result = 11;</code>
     * @return \Ydb\Coordination\SessionResponse\DescribeSemaphoreResult|null
     */
    public function getDescribeSemaphoreResult()
    {
        return $this->readOneof(11);
    }

    public function hasDescribeSemaphoreResult()
    {
        return $this->hasOneof(11);
    }

    /**
     * Generated from protobuf field <code>.Ydb.Coordination.SessionResponse.DescribeSemaphoreResult describe_semaphore_result = 11;</code>
     * @param \Ydb\Coordination\SessionResponse\DescribeSemaphoreResult $var
     * @return $this
     */
    public function setDescribeSemaphoreResult($var)
    {
        GPBUtil::checkMessage($var, \Ydb\Coordination\SessionResponse\DescribeSemaphoreResult::class);
        $this->writeOneof(11, $var);

        return $this;
    }

    /**
     * Generated from protobuf field <code>.Ydb.Coordination.SessionResponse.DescribeSemaphoreChanged describe_semaphore_changed = 12;</code>
     * @return \Ydb\Coordination\SessionResponse\DescribeSemaphoreChanged|null
     */
    public function getDescribeSemaphoreChanged()
    {
        return $this->readOneof(12);
    }

    public function hasDescribeSemaphoreChanged()
    {
        return $this->hasOneof(12);
    }

    /**
     * Generated from protobuf field <code>.Ydb.Coordination.SessionResponse.DescribeSemaphoreChanged describe_semaphore_changed = 12;</code>
     * @param \Ydb\Coordination\SessionResponse\DescribeSemaphoreChanged $var
     * @return $this
     */
    public function setDescribeSemaphoreChanged($var)
    {
        GPBUtil::checkMessage($var, \Ydb\Coordination\SessionResponse\DescribeSemaphoreChanged::class);
        $this->writeOneof(12, $var);

        return $this;
    }

    /**
     * Generated from protobuf field <code>.Ydb.Coordination.SessionResponse.CreateSemaphoreResult create_semaphore_result = 13;</code>
     * @return \Ydb\Coordination\SessionResponse\CreateSemaphoreResult|null
     */
    public function getCreateSemaphoreResult()
    {
        return $this->readOneof(13);
    }

    public function hasCreateSemaphoreResult()
    {
        return $this->hasOneof(13);
    }

    /**
     * Generated from protobuf field <code>.Ydb.Coordination.SessionResponse.CreateSemaphoreResult create_semaphore_result = 13;</code>
     * @param \Ydb\Coordination\SessionResponse\CreateSemaphoreResult $var
     * @return $this
     */
    public function setCreateSemaphoreResult($var)
    {
        GPBUtil::checkMessage($var, \Ydb\Coordination\SessionResponse\CreateSemaphoreResult::class);
        $this->writeOneof(13, $var);

        return $this;
    }

    /**
     * Generated from protobuf field <code>.Ydb.Coordination.SessionResponse.UpdateSemaphoreResult update_semaphore_result = 14;</code>
     * @return \Ydb\Coordination\SessionResponse\UpdateSemaphoreResult|null
     */
    public function getUpdateSemaphoreResult()
    {
        return $this->readOneof(14);
    }

    public function hasUpdateSemaphoreResult()
    {
        return $this->hasOneof(14);
    }

    /**
     * Generated from protobuf field <code>.Ydb.Coordination.SessionResponse.UpdateSemaphoreResult update_semaphore_result = 14;</code>
     * @param \Ydb\Coordination\SessionResponse\UpdateSemaphoreResult $var
     * @return $this
     */
    public function setUpdateSemaphoreResult($var)
    {
        GPBUtil::checkMessage($var, \Ydb\Coordination\SessionResponse\UpdateSemaphoreResult::class);
        $this->writeOneof(14, $var);

        return $this;
    }

    /**
     * Generated from protobuf field <code>.Ydb.Coordination.SessionResponse.DeleteSemaphoreResult delete_semaphore_result = 15;</code>
     * @return \Ydb\Coordination\SessionResponse\DeleteSemaphoreResult|null
     */
    public function getDeleteSemaphoreResult()
    {
        return $this->readOneof(15);
    }

    public function hasDeleteSemaphoreResult()
    {
        return $this->hasOneof(15);
    }

    /**
     * Generated from protobuf field <code>.Ydb.Coordination.SessionResponse.DeleteSemaphoreResult delete_semaphore_result = 15;</code>
     * @param \Ydb\Coordination\SessionResponse\DeleteSemaphoreResult $var
     * @return $this
     */
    public function setDeleteSemaphoreResult($var)
    {
        GPBUtil::checkMessage($var, \Ydb\Coordination\SessionResponse\DeleteSemaphoreResult::class);
        $this->writeOneof(15, $var);

        return $this;
    }

    /**
     * Generated from protobuf field <code>.Ydb.Coordination.Unsupported unsupported_16 = 16;</code>
     * @return \Ydb\Coordination\Unsupported|null
     */
    public function getUnsupported16()
    {
        return $this->readOneof(16);
    }

    public function hasUnsupported16()
    {
        return $this->hasOneof(16);
    }

    /**
     * Generated from protobuf field <code>.Ydb.Coordination.Unsupported unsupported_16 = 16;</code>
     * @param \Ydb\Coordination\Unsupported $var
     * @return $this
     */
    public function setUnsupported16($var)
    {
        GPBUtil::checkMessage($var, \Ydb\Coordination\Unsupported::class);
        $this->writeOneof(16, $var);

        return $this;
    }

    /**
     * Generated from protobuf field <code>.Ydb.Coordination.Unsupported unsupported_17 = 17;</code>
     * @return \Ydb\Coordination\Unsupported|null
     */
    public function getUnsupported17()
    {
        return $this->readOneof(17);
    }

    public function hasUnsupported17()
    {
        return $this->hasOneof(17);
    }

    /**
     * Generated from protobuf field <code>.Ydb.Coordination.Unsupported unsupported_17 = 17;</code>
     * @param \Ydb\Coordination\Unsupported $var
     * @return $this
     */
    public function setUnsupported17($var)
    {
        GPBUtil::checkMessage($var, \Ydb\Coordination\Unsupported::class);
        $this->writeOneof(17, $var);

        return $this;
    }

    /**
     * Generated from protobuf field <code>.Ydb.Coordination.Unsupported unsupported_18 = 18;</code>
     * @return \Ydb\Coordination\Unsupported|null
     */
    public function getUnsupported18()
    {
        return $this->readOneof(18);
    }

    public function hasUnsupported18()
    {
        return $this->hasOneof(18);
    }

    /**
     * Generated from protobuf field <code>.Ydb.Coordination.Unsupported unsupported_18 = 18;</code>
     * @param \Ydb\Coordination\Unsupported $var
     * @return $this
     */
    public function setUnsupported18($var)
    {
        GPBUtil::checkMessage($var, \Ydb\Coordination\Unsupported::class);
        $this->writeOneof(18, $var);

        return $this;
    }

    /**
     * @return string
     */
    public function getResponse()
    {
        return $this->whichOneof("response");
    }

}