@@ -0,0 +1,1541 @@
+package org.realityforge.replicant.client.transport;%0A%0Aimport java.util.Objects;%0Aimport java.util.function.Consumer;%0Aimport java.util.function.Supplier;%0Aimport javax.annotation.Nonnull;%0Aimport javax.annotation.Nullable;%0A%0Apublic final class WebSocketConfig%0A%7B%0A  /**%0A   * The url of websocket. Typically something like ws://example.com/myapp/api%0A   */%0A  @Nonnull%0A  private final String _url;%0A  /**%0A   * The remote call accepts a runnable that is used to invoke the remote invocation.%0A   * This runnable may be invoked immediately or deferred until later (such as after%0A   * authentication token has been generated).%0A   */%0A  @Nonnull%0A  private final Consumer%3CRunnable%3E _remoteCallWrapper;%0A  /**%0A   * Mechanism via which an authentication token is generated, if any.%0A   */%0A  @Nullable%0A  private final Supplier%3CString%3E _authenticationTokenGenerator;%0A%0A  public WebSocketConfig( @Nonnull final String url,%0A                          @Nonnull final Consumer%3CRunnable%3E remoteCallWrapper,%0A                          @Nullable final Supplier%3CString%3E authenticationTokenGenerator )%0A  %7B%0A    _url = Objects.requireNonNull( url );%0A    _remoteCallWrapper = Objects.requireNonNull( remoteCallWrapper );%0A    _authenticationTokenGenerator = authenticationTokenGenerator;%0A  %7D%0A%0A  @Nonnull%0A  public String getUrl()%0A  %7B%0A    return _url;%0A  %7D%0A%0A  @Nullable%0A  public Supplier%3CString%3E getAuthenticationTokenGenerator()%0A  %7B%0A    return _authenticationTokenGenerator;%0A  %7D%0A%0A  @Nonnull%0A  public Consumer%3CRunnable%3E getRemoteCallWrapper()%0A  %7B%0A    return _remoteCallWrapper;%0A  %7D%0A%7D%0A

Add data object to represent WebSocketConfig