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

package com.azure.resourcemanager.mobilenetwork.models;

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

/** Expiry times of inactive NAPT pinholes, in seconds. All timers must be at least 1 second. */
@Fluent
public final class PinholeTimeouts {
    /*
     * Pinhole timeout for TCP pinholes in seconds. Default for TCP is 3 minutes.
     */
    @JsonProperty(value = "tcp")
    private Integer tcp;

    /*
     * Pinhole timeout for UDP pinholes in seconds. Default for UDP is 30 seconds.
     */
    @JsonProperty(value = "udp")
    private Integer udp;

    /*
     * Pinhole timeout for ICMP pinholes in seconds. Default for ICMP Echo is 30 seconds.
     */
    @JsonProperty(value = "icmp")
    private Integer icmp;

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

    /**
     * Get the tcp property: Pinhole timeout for TCP pinholes in seconds. Default for TCP is 3 minutes.
     *
     * @return the tcp value.
     */
    public Integer tcp() {
        return this.tcp;
    }

    /**
     * Set the tcp property: Pinhole timeout for TCP pinholes in seconds. Default for TCP is 3 minutes.
     *
     * @param tcp the tcp value to set.
     * @return the PinholeTimeouts object itself.
     */
    public PinholeTimeouts withTcp(Integer tcp) {
        this.tcp = tcp;
        return this;
    }

    /**
     * Get the udp property: Pinhole timeout for UDP pinholes in seconds. Default for UDP is 30 seconds.
     *
     * @return the udp value.
     */
    public Integer udp() {
        return this.udp;
    }

    /**
     * Set the udp property: Pinhole timeout for UDP pinholes in seconds. Default for UDP is 30 seconds.
     *
     * @param udp the udp value to set.
     * @return the PinholeTimeouts object itself.
     */
    public PinholeTimeouts withUdp(Integer udp) {
        this.udp = udp;
        return this;
    }

    /**
     * Get the icmp property: Pinhole timeout for ICMP pinholes in seconds. Default for ICMP Echo is 30 seconds.
     *
     * @return the icmp value.
     */
    public Integer icmp() {
        return this.icmp;
    }

    /**
     * Set the icmp property: Pinhole timeout for ICMP pinholes in seconds. Default for ICMP Echo is 30 seconds.
     *
     * @param icmp the icmp value to set.
     * @return the PinholeTimeouts object itself.
     */
    public PinholeTimeouts withIcmp(Integer icmp) {
        this.icmp = icmp;
        return this;
    }

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