Skip to content

Commit

Permalink
update Connection
Browse files Browse the repository at this point in the history
  • Loading branch information
dshe committed Mar 12, 2023
1 parent b9d4a87 commit 8239345
Show file tree
Hide file tree
Showing 9 changed files with 32 additions and 52 deletions.
2 changes: 1 addition & 1 deletion InterReact.Demos/HelloWorld/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
.WithLoggerFactory(loggerFactory)
.ConnectAsync();

if (!client.RemoteIpEndPoint.Port.IsIBDemoPort())
if (!client.Connection.RemoteIpEndPoint.Port.IsIBDemoPort())
{
Console.WriteLine("Demo account is required since an order will be placed. Please first login to the TWS demo account.");
return;
Expand Down
4 changes: 2 additions & 2 deletions InterReact.Tests/ConnectTests/Arguments/AllArgs.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@ public async Task AllArgsTest()

IInterReactClient client = await connector.ConnectAsync();

Assert.Equal(IPAddress.IPv6Loopback, client.RemoteIpEndPoint.Address);
Assert.Equal(1234, client.ClientId);
Assert.Equal(IPAddress.IPv6Loopback, client.Connection.RemoteIpEndPoint.Address);
Assert.Equal(1234, client.Connection.ClientId);

await client.DisposeAsync();
}
Expand Down
4 changes: 2 additions & 2 deletions InterReact.Tests/SystemTests/Orders/OrderMonitorTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ public class Monitor : TestCollectionBase
[Fact]
public async Task OrderMonitorTest()
{
if (!Client.RemoteIpEndPoint.Port.IsIBDemoPort())
if (!Client.Connection.RemoteIpEndPoint.Port.IsIBDemoPort())
throw new Exception("Use demo account to place order.");

Contract contract = new()
Expand Down Expand Up @@ -44,7 +44,7 @@ public async Task OrderMonitorTest()
[Fact]
public async Task OrderMonitorCancellationTest()
{
if (!Client.RemoteIpEndPoint.Port.IsIBDemoPort())
if (!Client.Connection.RemoteIpEndPoint.Port.IsIBDemoPort())
throw new Exception("Use demo account to place order.");

Contract contract = new()
Expand Down
2 changes: 1 addition & 1 deletion InterReact.Tests/SystemTests/Orders/PlaceOrderTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ public class Place : TestCollectionBase
[Fact]
public async Task PlaceOrderTest()
{
if (!Client.RemoteIpEndPoint.Port.IsIBDemoPort())
if (!Client.Connection.RemoteIpEndPoint.Port.IsIBDemoPort())
throw new Exception("Use demo account to place order.");

Contract contract = new()
Expand Down
39 changes: 19 additions & 20 deletions InterReact/Core/Connection.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,18 +14,18 @@ public sealed class Connection : IAsyncDisposable
private readonly ILoggerFactory LogFactory;
private readonly ILogger Logger;
private IRxSocketClient RxSocketClient = NullRxSocketClient.Instance;
internal IPEndPoint RemoteIpEndPoint => (IPEndPoint) RxSocketClient.RemoteEndPoint;
public IPEndPoint RemoteIpEndPoint => (IPEndPoint) RxSocketClient.RemoteEndPoint;
internal IClock Clock { get; }
internal IPAddress IpAddress { get; }
internal IReadOnlyList<int> Ports { get; }
internal int ClientId { get; }
private IPAddress IpAddress { get; }
private IReadOnlyList<int> Ports { get; }
public int ClientId { get; }
private int MaxRequestsPerSecond { get; }
internal string OptionalCapabilities { get; }
internal bool FollowPriceTickWithSize { get; }
private string OptionalCapabilities { get; }
internal bool UseDelayedTicks { get; }
internal ServerVersion ServerVersionMin { get; } = InterReactClientConnector.ServerVersionMin;
internal ServerVersion ServerVersionMax { get; }
internal ServerVersion ServerVersionCurrent { get; private set; } = ServerVersion.NONE;

internal ServerVersion ServerVersionMin { get; } = ServerVersion.MIN_SERVER_VER_BOND_ISSUERID;
internal ServerVersion ServerVersionMax { get; } = ServerVersion.MIN_SERVER_VER_BOND_ISSUERID;
public ServerVersion ServerVersionCurrent { get; private set; } = ServerVersion.NONE;
internal bool SupportsServerVersion(ServerVersion version) => version <= ServerVersionCurrent;
internal void RequireServerVersion(ServerVersion version)
{
Expand All @@ -38,18 +38,17 @@ internal void RequireServerVersion(ServerVersion version)
// NextOrderId message is also received in response to Request.RequestNextOrderId().
internal int Id;

internal Connection(InterReactClientConnector connection)
internal Connection(InterReactClientConnector connector)
{
LogFactory = connection.LogFactory;
Logger = connection.LogFactory.CreateLogger("InterReact.Connection");
Clock = connection.Clock;
IpAddress= connection.IpAddress;
Ports = connection.Ports;
ClientId = connection.ClientId;
MaxRequestsPerSecond = connection.MaxRequestsPerSecond;
OptionalCapabilities= connection.OptionalCapabilities;
UseDelayedTicks = connection.UseDelayedTicks;
ServerVersionMax= connection.ServerVersionMax;
LogFactory = connector.LogFactory;
Logger = connector.LogFactory.CreateLogger("InterReact.Connection");
Clock = connector.Clock;
IpAddress = connector.IpAddress;
Ports = connector.Ports;
ClientId = connector.ClientId;
MaxRequestsPerSecond = connector.MaxRequestsPerSecond;
OptionalCapabilities= connector.OptionalCapabilities;
UseDelayedTicks = connector.UseDelayedTicks;
}

internal async Task<IInterReactClient> ConnectAsync(CancellationToken ct = default)
Expand Down
6 changes: 3 additions & 3 deletions InterReact/InterReact.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@
<PackageTags>IB Interactive-Brokers IBApi Trader-Workstation TWS reactive reactive-extensions Rx</PackageTags>
<Description>Interactive Brokers reactive C# API.</Description>
<Authors>DavidS</Authors>
<Version>0.3.0</Version>
<AssemblyVersion>0.3.0</AssemblyVersion>
<FileVersion>0.3.0</FileVersion>
<Version>0.3.1</Version>
<AssemblyVersion>0.3.1</AssemblyVersion>
<FileVersion>0.3.1</FileVersion>
<GeneratePackageOnBuild>False</GeneratePackageOnBuild>
<DebugType>embedded</DebugType>
<DebugSymbols>true</DebugSymbols>
Expand Down
16 changes: 3 additions & 13 deletions InterReact/InterReactClient.cs
Original file line number Diff line number Diff line change
@@ -1,33 +1,23 @@
using System.Net;

namespace InterReact;
namespace InterReact;

public interface IInterReactClient : IAsyncDisposable
{
IPEndPoint RemoteIpEndPoint { get; }
public ServerVersion ServerVersion { get; }
int ClientId { get; }
Connection Connection { get; }
Request Request { get; }
IObservable<object> Response { get; }
Service Service { get; }
}

public sealed class InterReactClient : IInterReactClient
{
private readonly Connection Connection;
public IPEndPoint RemoteIpEndPoint { get; }
public ServerVersion ServerVersion { get; }
public int ClientId { get; }
public Connection Connection { get; }
public Request Request { get; }
public IObservable<object> Response { get; }
public Service Service { get; }

public InterReactClient(Connection connection, Request request, Response response, Service service)
{
Connection = connection ?? throw new ArgumentNullException(nameof(connection));
RemoteIpEndPoint = connection.RemoteIpEndPoint;
ServerVersion = connection.ServerVersionCurrent;
ClientId = connection.ClientId;
Request = request;
Response = response;
Service = service;
Expand Down
9 changes: 0 additions & 9 deletions InterReact/InterReactClientConnector.cs
Original file line number Diff line number Diff line change
Expand Up @@ -50,15 +50,6 @@ public sealed record InterReactClientConnector
public InterReactClientConnector DoNotUseDelayedTicks() => this with
{ UseDelayedTicks = false };

internal const ServerVersion ServerVersionMin = ServerVersion.MIN_SERVER_VER_BOND_ISSUERID;
internal ServerVersion ServerVersionMax { get; private init; } = ServerVersion.MIN_SERVER_VER_BOND_ISSUERID;
public InterReactClientConnector WithMaxServerVersion(ServerVersion maxServerVersion)
{
if (maxServerVersion < ServerVersionMin)
throw new ArgumentException("Invalid MaxServerVersion");
return this with { ServerVersionMax = maxServerVersion };
}

/////////////////////////////////////////////////////////////

public async Task<IInterReactClient> ConnectAsync(CancellationToken ct = default)
Expand Down
2 changes: 1 addition & 1 deletion appveyor.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
environment:
base_version: '0.3.0'
base_version: '0.3.1'
version_suffix: ''
version: $(base_version).{build}
image: Visual Studio 2022
Expand Down

0 comments on commit 8239345

Please sign in to comment.