Skip to content

Commit

Permalink
Merge branch 'master' of https://github.com/oclancy/quickfixn
Browse files Browse the repository at this point in the history
  • Loading branch information
Oliver Clancy committed Jul 14, 2023
2 parents 059ee2f + ce2cdf6 commit 16846e5
Show file tree
Hide file tree
Showing 41 changed files with 502 additions and 298 deletions.
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -164,3 +164,8 @@ FakesAssemblies/

# JetBrains Rider
.idea

# stuff from the gh-pages branch I guess
.sass-cache/
_site/

2 changes: 1 addition & 1 deletion Messages/FIX40/QuickFix.FIX40.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
<Description>Open-source C# implementation of QuickFIX. This package allows you to create applications targeting the FIX 4.0 protocol.</Description>
<Copyright>Copyright © 2011 - $([System.DateTime]::UtcNow.Year) QuickFIXn.org. All rights reserved.</Copyright>
<Authors>Connamara Systems, LLC and QuickFIX/n contributors</Authors>
<Version>1.9.0</Version>
<Version>1.11.0</Version>
<Platforms>AnyCPU;x64</Platforms>
<PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance>
<PackageLicenseFile>LICENSE</PackageLicenseFile>
Expand Down
2 changes: 1 addition & 1 deletion Messages/FIX41/QuickFix.FIX41.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
<Description>Open-source C# implementation of QuickFIX. This package allows you to create applications targeting the FIX 4.1 protocol.</Description>
<Copyright>Copyright © 2011 - $([System.DateTime]::UtcNow.Year) QuickFIXn.org. All rights reserved.</Copyright>
<Authors>Connamara Systems, LLC and QuickFIX/n contributors</Authors>
<Version>1.9.0</Version>
<Version>1.11.0</Version>
<Platforms>AnyCPU;x64</Platforms>
<PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance>
<PackageLicenseFile>LICENSE</PackageLicenseFile>
Expand Down
2 changes: 1 addition & 1 deletion Messages/FIX42/QuickFix.FIX42.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
<Description>Open-source C# implementation of QuickFIX. This package allows you to create applications targeting the FIX 4.2 protocol.</Description>
<Copyright>Copyright © 2011 - $([System.DateTime]::UtcNow.Year) QuickFIXn.org. All rights reserved.</Copyright>
<Authors>Connamara Systems, LLC and QuickFIX/n contributors</Authors>
<Version>1.9.0</Version>
<Version>1.11.0</Version>
<Platforms>AnyCPU;x64</Platforms>
<PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance>
<PackageLicenseFile>LICENSE</PackageLicenseFile>
Expand Down
2 changes: 1 addition & 1 deletion Messages/FIX43/QuickFix.FIX43.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
<Description>Open-source C# implementation of QuickFIX. This package allows you to create applications targeting the FIX 4.3 protocol.</Description>
<Copyright>Copyright © 2011 - $([System.DateTime]::UtcNow.Year) QuickFIXn.org. All rights reserved.</Copyright>
<Authors>Connamara Systems, LLC and QuickFIX/n contributors</Authors>
<Version>1.9.0</Version>
<Version>1.11.0</Version>
<Platforms>AnyCPU;x64</Platforms>
<PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance>
<PackageLicenseFile>LICENSE</PackageLicenseFile>
Expand Down
2 changes: 1 addition & 1 deletion Messages/FIX44/QuickFix.FIX44.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
<Description>Open-source C# implementation of QuickFIX. This package allows you to create applications targeting the FIX 4.4 protocol.</Description>
<Copyright>Copyright © 2011 - $([System.DateTime]::UtcNow.Year) QuickFIXn.org. All rights reserved.</Copyright>
<Authors>Connamara Systems, LLC and QuickFIX/n contributors</Authors>
<Version>1.9.0</Version>
<Version>1.11.0</Version>
<Platforms>AnyCPU;x64</Platforms>
<PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance>
<PackageLicenseFile>LICENSE</PackageLicenseFile>
Expand Down
2 changes: 1 addition & 1 deletion Messages/FIX50/QuickFix.FIX50.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
<Description>Open-source C# implementation of QuickFIX. This package allows you to create applications targeting the FIX 5.0 protocol.</Description>
<Copyright>Copyright © 2011 - $([System.DateTime]::UtcNow.Year) QuickFIXn.org. All rights reserved.</Copyright>
<Authors>Connamara Systems, LLC and QuickFIX/n contributors</Authors>
<Version>1.9.0</Version>
<Version>1.11.0</Version>
<Platforms>AnyCPU;x64</Platforms>
<PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance>
<PackageLicenseFile>LICENSE</PackageLicenseFile>
Expand Down
2 changes: 1 addition & 1 deletion Messages/FIX50SP1/QuickFix.FIX50SP1.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
<Description>Open-source C# implementation of QuickFIX. This package allows you to create applications targeting the FIX 5.0 SP1 protocol.</Description>
<Copyright>Copyright © 2011 - $([System.DateTime]::UtcNow.Year) QuickFIXn.org. All rights reserved.</Copyright>
<Authors>Connamara Systems, LLC and QuickFIX/n contributors</Authors>
<Version>1.9.0</Version>
<Version>1.11.0</Version>
<Platforms>AnyCPU;x64</Platforms>
<PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance>
<PackageLicenseFile>LICENSE</PackageLicenseFile>
Expand Down
2 changes: 1 addition & 1 deletion Messages/FIX50SP2/QuickFix.FIX50SP2.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
<Description>Open-source C# implementation of QuickFIX. This package allows you to create applications targeting the FIX 5.0 SP2 protocol.</Description>
<Copyright>Copyright © 2011 - $([System.DateTime]::UtcNow.Year) QuickFIXn.org. All rights reserved.</Copyright>
<Authors>Connamara Systems, LLC and QuickFIX/n contributors</Authors>
<Version>1.9.0</Version>
<Version>1.11.0</Version>
<Platforms>AnyCPU;x64</Platforms>
<PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance>
<PackageLicenseFile>LICENSE</PackageLicenseFile>
Expand Down
8 changes: 4 additions & 4 deletions New-Release.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,9 @@ Write-Host '--== QuickFIX/n Package Release Script ==--' -ForegroundColor Cyan
Write-Host "`nTag Version: $TagVersion`n"

if ($UseWslRuby -and $UseWslRuby.IsPresent) {
wsl ruby scripts/update_assembly_version.rb "v$TagVersion" QuickFIXn/QuickFix.csproj Messages/FIX40/QuickFix.FIX40.csproj Messages/FIX41/QuickFix.FIX41.csproj Messages/FIX42/QuickFix.FIX42.csproj Messages/FIX43/QuickFix.FIX43.csproj Messages/FIX44/QuickFix.FIX44.csproj Messages/FIX50/QuickFix.FIX50.csproj Messages/FIX50SP1/QuickFix.FIX50SP1.csproj Messages/FIX50SP2/QuickFix.FIX50SP2.csproj
wsl ruby scripts/update_assembly_version.rb "$TagVersion" QuickFIXn/QuickFix.csproj Messages/FIX40/QuickFix.FIX40.csproj Messages/FIX41/QuickFix.FIX41.csproj Messages/FIX42/QuickFix.FIX42.csproj Messages/FIX43/QuickFix.FIX43.csproj Messages/FIX44/QuickFix.FIX44.csproj Messages/FIX50/QuickFix.FIX50.csproj Messages/FIX50SP1/QuickFix.FIX50SP1.csproj Messages/FIX50SP2/QuickFix.FIX50SP2.csproj
} else {
ruby scripts\update_assembly_version.rb "v$TagVersion" QuickFIXn\QuickFix.csproj Messages\FIX40\QuickFix.FIX40.csproj Messages\FIX41\QuickFix.FIX41.csproj Messages\FIX42\QuickFix.FIX42.csproj Messages\FIX43\QuickFix.FIX43.csproj Messages\FIX44\QuickFix.FIX44.csproj Messages\FIX50\QuickFix.FIX50.csproj Messages\FIX50SP1\QuickFix.FIX50SP1.csproj Messages\FIX50SP2\QuickFix.FIX50SP2.csproj
ruby scripts\update_assembly_version.rb "$TagVersion" QuickFIXn\QuickFix.csproj Messages\FIX40\QuickFix.FIX40.csproj Messages\FIX41\QuickFix.FIX41.csproj Messages\FIX42\QuickFix.FIX42.csproj Messages\FIX43\QuickFix.FIX43.csproj Messages\FIX44\QuickFix.FIX44.csproj Messages\FIX50\QuickFix.FIX50.csproj Messages\FIX50SP1\QuickFix.FIX50SP1.csproj Messages\FIX50SP2\QuickFix.FIX50SP2.csproj
}

$ExitCode = $LASTEXITCODE
Expand All @@ -49,13 +49,13 @@ git add Messages\FIX44\QuickFix.FIX44.csproj
git add Messages\FIX50\QuickFix.FIX50.csproj
git add Messages\FIX50SP1\QuickFix.FIX50SP1.csproj
git add Messages\FIX50SP2\QuickFix.FIX50SP2.csproj
git commit -m "version number for version %TAG_VERSION%"
git commit -m "version number for version $TagVersion"
Write-Host '* Version number committed.'

git tag -a $TagVersion -m 'Release version $TagVersion'
Write-Host '* Created tag.'

git checkout $TagVersion
git checkout -c advice.detachedHead=false $TagVersion
$ExitCode = $LASTEXITCODE
if ($ExitCode -eq 0) {
Write-Host "* Checked out tag $TagVersion"
Expand Down
16 changes: 16 additions & 0 deletions QuickFIXn/Dictionary.cs
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,22 @@ public long GetLong(string key)
}
}

public ulong GetULong(string key)
{
try
{
return Convert.ToUInt64(GetString(key));
}
catch(FormatException)
{
throw new ConfigError("Incorrect data type");
}
catch(QuickFIXException)
{
throw new ConfigError("No value for key: " + key);
}
}

public double GetDouble(string key)
{
try
Expand Down
29 changes: 29 additions & 0 deletions QuickFIXn/Fields/Converters/AsciiConverter.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@

namespace QuickFix.Fields.Converters
{
/// <summary>
/// convert Int64 to/from string
/// </summary>
public static class AsciiValidator
{
public const int ASCII_ZERO = 48;
public const int ASCII_NINE = 57;
public const int ASCII_MINUS = 45;

/// <summary>
/// TODO can we use NumberFormatInfo or NumberStyles to avoid this bit of ASCII hackery?
/// Validates that a string looks like number (for use before conversion to an int, ulong, etc.).
/// </summary>
/// <param name="i"></param>
/// <returns></returns>
public static void Validate(string i)
{
if ((null == i) || (i.Length < 1))
throw new FieldConvertError("The argument string cannot be null or empty");
int asciiValOfFirstChar = System.Convert.ToInt32(i[0]);
if ((asciiValOfFirstChar < ASCII_ZERO) || (asciiValOfFirstChar > ASCII_NINE))
if (asciiValOfFirstChar != ASCII_MINUS)
throw new FieldConvertError("Could not convert string to int (" + i + "): The first character must be a digit or a minus sign");
}
}
}
4 changes: 2 additions & 2 deletions QuickFIXn/Fields/Converters/DecimalConverter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@ public static Decimal Convert(string d)
if((null == d) || (d.Length < 1))
throw new FieldConvertError("The argument string cannot be null or empty");
int asciiValOfFirstChar = System.Convert.ToInt32(d[0]);
if ((asciiValOfFirstChar < IntConverter.ASCII_ZERO) || (asciiValOfFirstChar > IntConverter.ASCII_NINE))
if (asciiValOfFirstChar != IntConverter.ASCII_MINUS && asciiValOfFirstChar != ASCII_DECIMALPOINT)
if ((asciiValOfFirstChar < AsciiValidator.ASCII_ZERO) || (asciiValOfFirstChar > AsciiValidator.ASCII_NINE))
if (asciiValOfFirstChar != AsciiValidator.ASCII_MINUS && asciiValOfFirstChar != ASCII_DECIMALPOINT)
throw new FieldConvertError("Could not convert string to decimal (" + d + "): The first character must be a digit, decimal point, or minus sign");
return decimal.Parse(d, System.Globalization.NumberStyles.AllowExponent | System.Globalization.NumberStyles.AllowLeadingSign | System.Globalization.NumberStyles.AllowDecimalPoint, System.Globalization.CultureInfo.InvariantCulture);
}
Expand Down
14 changes: 2 additions & 12 deletions QuickFIXn/Fields/Converters/IntConverter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,7 @@ namespace QuickFix.Fields.Converters
/// </summary>
public static class IntConverter
{
public const int ASCII_ZERO = 48;
public const int ASCII_NINE = 57;
public const int ASCII_MINUS = 45;

/// <summary>
/// TODO can we use NumberFormatInfo or NumberStyles to avoid this bit of ASCII hackery?
/// Converts string to int.
/// </summary>
/// <param name="i"></param>
Expand All @@ -20,12 +15,7 @@ public static int Convert(string i)
{
try
{
if ((null == i) || (i.Length < 1))
throw new FieldConvertError("The argument string cannot be null or empty");
int asciiValOfFirstChar = System.Convert.ToInt32(i[0]);
if ((asciiValOfFirstChar < ASCII_ZERO) || (asciiValOfFirstChar > ASCII_NINE))
if (asciiValOfFirstChar != ASCII_MINUS)
throw new FieldConvertError("Could not convert string to int (" + i + "): The first character must be a digit or a minus sign");
AsciiValidator.Validate(i);
return System.Convert.ToInt32(i);
}
catch (System.FormatException e)
Expand All @@ -34,7 +24,7 @@ public static int Convert(string i)
}
catch (System.OverflowException e)
{
throw new FieldConvertError("Could not convert string to int(" + i + ")", e);
throw new FieldConvertError("Could not convert string to int (" + i + ")", e);
}
}

Expand Down
39 changes: 39 additions & 0 deletions QuickFIXn/Fields/Converters/ULongConverter.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@

namespace QuickFix.Fields.Converters
{
/// <summary>
/// convert UInt64 to/from string
/// </summary>
public static class ULongConverter
{
/// <summary>
/// Converts string to ulong.
/// </summary>
/// <param name="i"></param>
/// <returns></returns>
public static ulong Convert(string i)
{
try
{
AsciiValidator.Validate(i);
return System.Convert.ToUInt64(i);
}
catch (System.FormatException e)
{
throw new FieldConvertError("Could not convert string to ulong (" + i + ")", e);
}
catch (System.OverflowException e)
{
throw new FieldConvertError("Could not convert string to ulong (" + i + ")", e);
}
}

/// <summary>
/// convert ulong to string
/// </summary>
public static string Convert(System.UInt64 i)
{
return i.ToString();
}
}
}
Loading

0 comments on commit 16846e5

Please sign in to comment.