SocketFlow (Java SE 13 & JDK 13 )
Description: declaration: module: jdk.net, package: jdk.net, class: SocketFlow
Keywords: jdk.net.SocketFlow class

Module jdk.net
Package jdk.net

# Class SocketFlow

java.lang.Object
jdk.net.SocketFlow

    public class SocketFlow
    extends Object

Represents the service level properties for the platform specific socket option `ExtendedSocketOptions.SO_FLOW_SLA`.

The priority and bandwidth parameters must be set before setting the socket option.

When the `SO_FLOW_SLA` option is set then it may not take effect immediately. If the value of the socket option is obtained with `getOption()` then the status may be returned as `INPROGRESS` until it takes effect. The priority and bandwidth values are only valid when the status is returned as OK.

When a security manager is installed, a `NetworkPermission` is required to set or get this option.

Since:
  1.8

- ## Nested Class Summary

  Nested Classes
  Modifier and Type | Class | Description
  --- | --- | ---
  `static class` | `SocketFlow.Status` | Enumeration of the return values from the SO_FLOW_SLA socket option.

- ## Field Summary

  Fields
  Modifier and Type | Field | Description
  --- | --- | ---
  `static int` | `HIGH_PRIORITY` |
  `static int` | `NORMAL_PRIORITY` |
  `static int` | `UNSET` |

- ## Method Summary

  Modifier and Type | Method | Description
  --- | --- | ---
  `long` | `bandwidth()` | Returns this SocketFlow's bandwidth.
  `SocketFlow` | `bandwidth​(long bandwidth)` | Sets this SocketFlow's bandwidth.
  `static SocketFlow` | `create()` | Creates a new SocketFlow that can be used to set the SO_FLOW_SLA socket option and create a socket flow.
  `int` | `priority()` | Returns this SocketFlow's priority.
  `SocketFlow` | `priority​(int priority)` | Sets this SocketFlow's priority.
  `SocketFlow.Status` | `status()` | Returns the Status value of this SocketFlow.

  ### Methods declared in class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Field Details

  - ### UNSET

    @Native public static final int UNSET
    See Also:
      Constant Field Values

  - ### NORMAL_PRIORITY

    @Native public static final int NORMAL_PRIORITY
    See Also:
      Constant Field Values

  - ### HIGH_PRIORITY

    @Native public static final int HIGH_PRIORITY
    See Also:
      Constant Field Values

- ## Method Details

  - ### create

    public static SocketFlow create()
    Creates a new SocketFlow that can be used to set the SO_FLOW_SLA socket option and create a socket flow.

  - ### priority

    public SocketFlow priority​(int priority)
    Sets this SocketFlow's priority. Must be either NORMAL_PRIORITY HIGH_PRIORITY. If not set, a flow's priority is normal.
    Throws:
      `IllegalArgumentException` - if priority is not NORMAL_PRIORITY or HIGH_PRIORITY.

  - ### bandwidth

    public SocketFlow bandwidth​(long bandwidth)
    Sets this SocketFlow's bandwidth. Must be greater than or equal to zero. A value of zero drops all packets for the socket.
    Throws:
      `IllegalArgumentException` - if bandwidth is less than zero.

  - ### priority

    public int priority()
    Returns this SocketFlow's priority.

  - ### bandwidth

    public long bandwidth()
    Returns this SocketFlow's bandwidth.
    Returns:
      this SocketFlow's bandwidth, or `-1` if status is not OK.

  - ### status

    public SocketFlow.Status status()
    Returns the Status value of this SocketFlow. NO_STATUS is returned if the object was not used in a call to set or get the option.