// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
// Code generated by Microsoft (R) AutoRest Code Generator.

package com.azure.resourcemanager.mediaservices.models;

import com.azure.core.annotation.Fluent;
import com.fasterxml.jackson.annotation.JsonProperty;

/** The live event track status. */
@Fluent
public final class LiveEventTrackStatus {
    /*
     * Track Id.
     */
    @JsonProperty(value = "trackId")
    private String trackId;

    /*
     * Expected bitrate for this track.
     */
    @JsonProperty(value = "expectedBitrate")
    private Long expectedBitrate;

    /*
     * Average incoming bitrate for last 20 seconds when live event is running.
     */
    @JsonProperty(value = "incomingBitrate")
    private Long incomingBitrate;

    /*
     * Current ingest drift value in seconds for last 1 minute.
     */
    @JsonProperty(value = "ingestDrift")
    private String ingestDrift;

    /*
     * Total number of timed metadata request received.
     */
    @JsonProperty(value = "requestReceived")
    private Long requestReceived;

    /*
     * Total number of successful timed metadata request received.
     */
    @JsonProperty(value = "requestSucceeded")
    private Long requestSucceeded;

    /** Creates an instance of LiveEventTrackStatus class. */
    public LiveEventTrackStatus() {
    }

    /**
     * Get the trackId property: Track Id.
     *
     * @return the trackId value.
     */
    public String trackId() {
        return this.trackId;
    }

    /**
     * Set the trackId property: Track Id.
     *
     * @param trackId the trackId value to set.
     * @return the LiveEventTrackStatus object itself.
     */
    public LiveEventTrackStatus withTrackId(String trackId) {
        this.trackId = trackId;
        return this;
    }

    /**
     * Get the expectedBitrate property: Expected bitrate for this track.
     *
     * @return the expectedBitrate value.
     */
    public Long expectedBitrate() {
        return this.expectedBitrate;
    }

    /**
     * Set the expectedBitrate property: Expected bitrate for this track.
     *
     * @param expectedBitrate the expectedBitrate value to set.
     * @return the LiveEventTrackStatus object itself.
     */
    public LiveEventTrackStatus withExpectedBitrate(Long expectedBitrate) {
        this.expectedBitrate = expectedBitrate;
        return this;
    }

    /**
     * Get the incomingBitrate property: Average incoming bitrate for last 20 seconds when live event is running.
     *
     * @return the incomingBitrate value.
     */
    public Long incomingBitrate() {
        return this.incomingBitrate;
    }

    /**
     * Set the incomingBitrate property: Average incoming bitrate for last 20 seconds when live event is running.
     *
     * @param incomingBitrate the incomingBitrate value to set.
     * @return the LiveEventTrackStatus object itself.
     */
    public LiveEventTrackStatus withIncomingBitrate(Long incomingBitrate) {
        this.incomingBitrate = incomingBitrate;
        return this;
    }

    /**
     * Get the ingestDrift property: Current ingest drift value in seconds for last 1 minute.
     *
     * @return the ingestDrift value.
     */
    public String ingestDrift() {
        return this.ingestDrift;
    }

    /**
     * Set the ingestDrift property: Current ingest drift value in seconds for last 1 minute.
     *
     * @param ingestDrift the ingestDrift value to set.
     * @return the LiveEventTrackStatus object itself.
     */
    public LiveEventTrackStatus withIngestDrift(String ingestDrift) {
        this.ingestDrift = ingestDrift;
        return this;
    }

    /**
     * Get the requestReceived property: Total number of timed metadata request received.
     *
     * @return the requestReceived value.
     */
    public Long requestReceived() {
        return this.requestReceived;
    }

    /**
     * Set the requestReceived property: Total number of timed metadata request received.
     *
     * @param requestReceived the requestReceived value to set.
     * @return the LiveEventTrackStatus object itself.
     */
    public LiveEventTrackStatus withRequestReceived(Long requestReceived) {
        this.requestReceived = requestReceived;
        return this;
    }

    /**
     * Get the requestSucceeded property: Total number of successful timed metadata request received.
     *
     * @return the requestSucceeded value.
     */
    public Long requestSucceeded() {
        return this.requestSucceeded;
    }

    /**
     * Set the requestSucceeded property: Total number of successful timed metadata request received.
     *
     * @param requestSucceeded the requestSucceeded value to set.
     * @return the LiveEventTrackStatus object itself.
     */
    public LiveEventTrackStatus withRequestSucceeded(Long requestSucceeded) {
        this.requestSucceeded = requestSucceeded;
        return this;
    }

    /**
     * Validates the instance.
     *
     * @throws IllegalArgumentException thrown if the instance is not valid.
     */
    public void validate() {
    }
}
