Class MsftNetIpAddressService

java.lang.Object
io.github.eggy03.ferrumx.windows.service.network.MsftNetIpAddressService
All Implemented Interfaces:
CommonServiceInterface<MsftNetIpAddress>

public class MsftNetIpAddressService extends Object implements CommonServiceInterface<MsftNetIpAddress>
Service class for fetching the IPv4 and IPv6 configs for a network adapter.

This class executes the StandardCimv2.MSFT_NET_IP_ADDRESS PowerShell command and maps the resulting JSON into an immutable list of MsftNetIpAddress objects.

Usage examples

// Convenience API (creates its own short-lived session)
MsftNetIpAddressService service = new MsftNetIpAddressService();
List<MsftNetIpAddress> address = service.get();

// API with re-usable session (caller manages session lifecycle)
try (PowerShell session = PowerShell.openSession()) {
   MsftNetIpAddressService service = new MsftNetIpAddressService();
    List<MsftNetIpAddress> address = service.get(session);
}

// API with execution timeout (auto-created session is terminated if the timeout is exceeded)
MsftNetIpAddressService service = new MsftNetIpAddressService();
List<MsftNetIpAddress> address = service.get(10);

Execution models and concurrency

This service supports multiple PowerShell execution strategies:

  • jPowerShell-based execution via get() and get(PowerShell):
    These methods rely on jPowerShell sessions. Due to internal global configuration of jPowerShell, the PowerShell sessions launched by it is not safe to use concurrently across multiple threads or executors. Running these methods in parallel may result in runtime exceptions.
  • Isolated PowerShell execution via get(long timeout):
    This method doesn't rely on jPowerShell and instead, launches a standalone PowerShell process per invocation using TerminalUtility. Each call is fully isolated and safe to use in multithreaded and executor-based environments.

For concurrent or executor-based workloads, prefer get(long timeout).

Since:
3.0.0
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    @NotNull @Unmodifiable List<MsftNetIpAddress>
    get()
    Retrieves an immutable list of IPv4 and IPv6 configs for all network adapters present in the system.
    @NotNull @Unmodifiable List<MsftNetIpAddress>
    get(long timeout)
    Retrieves an immutable list of IPv4 and IPv6 configs for all network adapters connected to the system using an isolated PowerShell process with a configurable timeout.
    @NotNull @Unmodifiable List<MsftNetIpAddress>
    get(@NonNull com.profesorfalken.jpowershell.PowerShell powerShell)
    Retrieves an immutable list of IPv4 and IPv6 configs for all network adapters present in the system using the caller's PowerShell session.

    Methods inherited from class Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • MsftNetIpAddressService

      public MsftNetIpAddressService()
  • Method Details

    • get

      @UsesJPowerShell @NotNull public @NotNull @Unmodifiable List<MsftNetIpAddress> get()
      Retrieves an immutable list of IPv4 and IPv6 configs for all network adapters present in the system.

      Each invocation creates and uses a short-lived PowerShell session internally.

      Specified by:
      get in interface CommonServiceInterface<MsftNetIpAddress>
      Returns:
      an immutable list of MsftNetIpAddress objects representing the IPv4 and IPv6 configs. Returns an empty list if no configs are detected.
      Since:
      3.0.0
    • get

      @UsesJPowerShell @NotNull public @NotNull @Unmodifiable List<MsftNetIpAddress> get(@NonNull @NonNull com.profesorfalken.jpowershell.PowerShell powerShell)
      Retrieves an immutable list of IPv4 and IPv6 configs for all network adapters present in the system using the caller's PowerShell session.
      Specified by:
      get in interface CommonServiceInterface<MsftNetIpAddress>
      Parameters:
      powerShell - an existing PowerShell session managed by the caller
      Returns:
      an immutable list of MsftNetIpAddress objects representing the IPv4 and IPv6 configs. Returns an empty list if no configs are detected.
      Since:
      3.0.0
    • get

      @IsolatedPowerShell @NotNull public @NotNull @Unmodifiable List<MsftNetIpAddress> get(long timeout)
      Retrieves an immutable list of IPv4 and IPv6 configs for all network adapters connected to the system using an isolated PowerShell process with a configurable timeout.

      Each invocation creates an isolated PowerShell process, which is pre-maturely terminated if execution exceeds the specified timeout.

      Specified by:
      get in interface CommonServiceInterface<MsftNetIpAddress>
      Parameters:
      timeout - the maximum time (in seconds) to wait for the PowerShell command to complete before terminating the process
      Returns:
      an immutable list of MsftNetIpAddress objects representing the IPv4 and IPv6 configs. Returns an empty list if no configs are detected.
      Since:
      3.1.0