Skip to content

Commit

Permalink
Deprecated enumerations
Browse files Browse the repository at this point in the history
  • Loading branch information
mgnsm committed Mar 6, 2024
1 parent 929723e commit a959bd2
Show file tree
Hide file tree
Showing 36 changed files with 1,349 additions and 328 deletions.
44 changes: 22 additions & 22 deletions Benchmarks/Millistream.Streaming.Benchmarks/DecodingBenchmarks.cs
Original file line number Diff line number Diff line change
Expand Up @@ -164,9 +164,9 @@ private void Logon()
if (!_mdf.Connect(Server))
throw new InvalidOperationException("Failed to connect.");

_ = _message.Add(0, (int)MessageReference.MDF_M_LOGON);
_ = _message.AddString((int)Field.MDF_F_USERNAME, Username);
_ = _message.AddString((int)Field.MDF_F_PASSWORD, Password);
_ = _message.Add(0, MessageReferences.MDF_M_LOGON);
_ = _message.AddString(Fields.MDF_F_USERNAME, Username);
_ = _message.AddString(Fields.MDF_F_PASSWORD, Password);
_ = _mdf.Send(_message);
_message.Reset();
if (!Consume(1, 10))
Expand All @@ -178,9 +178,9 @@ private unsafe void LogonUsingFunctionPointer()
if (FunctionPointers.mdf_connect(_mdfHandle, Server) != 1)
throw new InvalidOperationException("Failed to connect.");

_ = FunctionPointers.mdf_message_add(_messageHandle, 0, (int)MessageReference.MDF_M_LOGON);
_ = FunctionPointers.mdf_message_add_string_str(_messageHandle, (int)Field.MDF_F_USERNAME, Username);
_ = FunctionPointers.mdf_message_add_string_str(_messageHandle, (int)Field.MDF_F_PASSWORD, Password);
_ = FunctionPointers.mdf_message_add(_messageHandle, 0, MessageReferences.MDF_M_LOGON);
_ = FunctionPointers.mdf_message_add_string_str(_messageHandle, Fields.MDF_F_USERNAME, Username);
_ = FunctionPointers.mdf_message_add_string_str(_messageHandle, Fields.MDF_F_PASSWORD, Password);
_ = FunctionPointers.mdf_message_send(_mdfHandle, _messageHandle);
FunctionPointers.mdf_message_reset(_messageHandle);
if (!ConsumeUsingFunctionPointer(1, 10))
Expand All @@ -189,22 +189,22 @@ private unsafe void LogonUsingFunctionPointer()

private void Request()
{
_ = _message.Add(0, (int)MessageReference.MDF_M_REQUEST);
_ = _message.AddList((uint)Field.MDF_F_REQUESTCLASS, StringConstants.RequestClasses.MDF_RC_BASICDATA);
_ = _message.AddNumeric((uint)Field.MDF_F_REQUESTTYPE, StringConstants.RequestTypes.MDF_RT_IMAGE);
_ = _message.AddList((uint)Field.MDF_F_INSREFLIST, "772");
_ = _message.AddString((uint)Field.MDF_F_REQUESTID, "rid");
_ = _message.Add(0, MessageReferences.MDF_M_REQUEST);
_ = _message.AddList(Fields.MDF_F_REQUESTCLASS, RequestClasses.MDF_RC_BASICDATA);
_ = _message.AddNumeric(Fields.MDF_F_REQUESTTYPE, RequestTypes.MDF_RT_IMAGE);
_ = _message.AddList(Fields.MDF_F_INSREFLIST, "772");
_ = _message.AddString(Fields.MDF_F_REQUESTID, "rid");
_ = _mdf.Send(_message);
_message.Reset();
}

private unsafe void RequestUsingFunctionPointer()
{
_ = FunctionPointers.mdf_message_add(_messageHandle, 0, (int)MessageReference.MDF_M_REQUEST);
_ = FunctionPointers.mdf_message_add_list_str(_messageHandle, (uint)Field.MDF_F_REQUESTCLASS, StringConstants.RequestClasses.MDF_RC_BASICDATA);
_ = FunctionPointers.mdf_message_add_numeric_str(_messageHandle, (uint)Field.MDF_F_REQUESTTYPE, StringConstants.RequestTypes.MDF_RT_IMAGE);
_ = FunctionPointers.mdf_message_add_list_str(_messageHandle, (uint)Field.MDF_F_INSREFLIST, "772");
_ = FunctionPointers.mdf_message_add_string_str(_messageHandle, (uint)Field.MDF_F_REQUESTID, "rid");
_ = FunctionPointers.mdf_message_add(_messageHandle, 0, MessageReferences.MDF_M_REQUEST);
_ = FunctionPointers.mdf_message_add_list_str(_messageHandle, Fields.MDF_F_REQUESTCLASS, RequestClasses.MDF_RC_BASICDATA);
_ = FunctionPointers.mdf_message_add_numeric_str(_messageHandle, Fields.MDF_F_REQUESTTYPE, RequestTypes.MDF_RT_IMAGE);
_ = FunctionPointers.mdf_message_add_list_str(_messageHandle, Fields.MDF_F_INSREFLIST, "772");
_ = FunctionPointers.mdf_message_add_string_str(_messageHandle, Fields.MDF_F_REQUESTID, "rid");
_ = FunctionPointers.mdf_message_send(_mdfHandle, _messageHandle);
FunctionPointers.mdf_message_reset(_messageHandle);
}
Expand All @@ -222,11 +222,11 @@ private bool Consume(int consumeTimeout, int waitTimeout)
{
while (_mdf.GetNextMessage(out int mref, out int _, out _))
{
if (mref == (int)MessageReference.MDF_M_LOGONGREETING)
if (mref == MessageReferences.MDF_M_LOGONGREETING)
return true;

while (_mdf.GetNextField(out uint field, out ReadOnlySpan<byte> value))
if (field == (uint)Field.MDF_F_REQUESTID && !value.IsEmpty)
if (field == Fields.MDF_F_REQUESTID && !value.IsEmpty)
return true;
}
}
Expand All @@ -251,7 +251,7 @@ private unsafe bool ConsumeUsingFunctionPointer(int consumeTimeout, int waitTime
ulong insref = default;
while (FunctionPointers.mdf_get_next_message(_mdfHandle, ref mref, ref mclass, ref insref) == 1)
{
if (mref == (int)MessageReference.MDF_M_LOGONGREETING)
if (mref == MessageReferences.MDF_M_LOGONGREETING)
return true;

uint tag = default;
Expand All @@ -274,7 +274,7 @@ private unsafe bool ConsumeUsingFunctionPointer(int consumeTimeout, int waitTime
span = default;
}

if (tag == (uint)Field.MDF_F_REQUESTID && !span.IsEmpty)
if (tag == Fields.MDF_F_REQUESTID && !span.IsEmpty)
return true;
}
}
Expand All @@ -288,7 +288,7 @@ private static void DataCallback(object userData, MarketDataFeed<object, object>
{
while (handle.GetNextMessage(out int _, out _, out _))
while (handle.GetNextField(out uint tag, out ReadOnlySpan<byte> value))
if (tag == (uint)Field.MDF_F_REQUESTID && !value.IsEmpty)
if (tag == Fields.MDF_F_REQUESTID && !value.IsEmpty)
s_dataCallbackInvoked = true;
}

Expand Down Expand Up @@ -319,7 +319,7 @@ private static unsafe void DataCallbackUsingFunctionPointer(IntPtr userdata, Int
value = default;
}

if (tag == (uint)Field.MDF_F_REQUESTID && !value.IsEmpty)
if (tag == Fields.MDF_F_REQUESTID && !value.IsEmpty)
s_dataCallbackInvoked = true;
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,15 @@ namespace Millistream.Streaming.Benchmarks.Message
{
public class CompressionLevelBenchmarks : MessageBenchmarks
{
#pragma warning disable CS0618
private const CompressionLevel Level = CompressionLevel.Z_BEST_COMPRESSION;

[Benchmark(Baseline = true)]
public void SetCompressionLevel() => _message.CompressionLevel = Level;
#pragma warning restore CS0618

[Benchmark]
public void SetCompressionLevelUsingDllImport() =>
public int SetCompressionLevelUsingDllImport() =>
DllImports.mdf_message_set_property(_messageHandle, MDF_MSG_OPTION.MDF_MSG_OPT_COMPRESSION, (int)Level);

[Benchmark]
Expand Down
40 changes: 20 additions & 20 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,14 +54,14 @@ mdf.StatusCallback = (data, status, host, ip) =>
mdf.Connect("sandbox.millistream.com:9100");

//4. Send a MDF_M_LOGON message to log on.
message.Add(0, MessageReference.MDF_M_LOGON);
message.AddString(Field.MDF_F_USERNAME, "sandbox");
message.AddString(Field.MDF_F_PASSWORD, "sandbox");
message.Add(0, MessageReferences.MDF_M_LOGON);
message.AddString(Fields.MDF_F_USERNAME, "sandbox");
message.AddString(Fields.MDF_F_PASSWORD, "sandbox");
mdf.Send(message);
message.Reset();

//5. Consume and wait for the server to send a MDF_M_LOGONGREETING message.
if (!Consume(mdf, MessageReference.MDF_M_LOGONGREETING))
if (!Consume(mdf, MessageReferences.MDF_M_LOGONGREETING))
{
Console.WriteLine("Failed to connect to the API.");
return;
Expand All @@ -71,33 +71,33 @@ Console.WriteLine($"{DateTime.Now.ToShortTimeString()} - Logged in");
//6. Register a data callback (optional).
mdf.DataCallback = (data, handle) =>
{
while (handle.GetNextMessage(out MessageReference mref, out ulong insref))
while (handle.GetNextMessage(out ushort mref, out ulong insref))
{
Console.WriteLine($"{DateTime.Now.ToShortTimeString()} - " +
$"Received an {mref} message with the following fields:");
"Received a message with the following fields:");

while (handle.GetNextField(out Field field, out ReadOnlySpan<byte> value))
while (handle.GetNextField(out uint tag, out ReadOnlySpan<byte> value))
{
#if NETCOREAPP
Console.WriteLine($"{field}: {Encoding.UTF8.GetString(value)}");
Console.WriteLine($"Field: {tag}, Value: {Encoding.UTF8.GetString(value)}");
#else
Console.WriteLine($"{field}: {Encoding.UTF8.GetString(value.ToArray())}");
Console.WriteLine($"Field: {tag}, Value: {Encoding.UTF8.GetString(value.ToArray())}");
#endif
}
}
};

//7. Request some data.
message.Add(0, MessageReference.MDF_M_REQUEST);
message.AddList(Field.MDF_F_REQUESTCLASS, // <- What kind of data to request.
StringConstants.RequestClasses.MDF_RC_BASICDATA + " " + // <- Basic data
StringConstants.RequestClasses.MDF_RC_QUOTE); // < ...and quotes in this case.
message.Add(0, MessageReferences.MDF_M_REQUEST);
message.AddList(Fields.MDF_F_REQUESTCLASS, // <- What kind of data to request.
RequestClasses.MDF_RC_BASICDATA + " " + // <- Basic data
RequestClasses.MDF_RC_QUOTE); // < ...and quotes in this case.
message.AddNumeric(
Field.MDF_F_REQUESTTYPE, // <- The type of request.
StringConstants.RequestTypes.MDF_RT_FULL // <- Full (image+streaming) in this case.
Fields.MDF_F_REQUESTTYPE, // <- The type of request.
RequestTypes.MDF_RT_FULL // <- Full (image+streaming) in this case.
);
message.AddList(
Field.MDF_F_INSREFLIST, // <- What instrument identifier(s) the request is for.
Fields.MDF_F_INSREFLIST, // <- What instrument identifier(s) the request is for.
"772"); // <- 772 is the unique identifier for Ericsson B.
mdf.Send(message);
message.Reset();
Expand All @@ -114,17 +114,17 @@ while (!Console.KeyAvailable)

// 9. Log off by sending an MDF_M_LOGOFF message (optional).
mdf.DataCallback = null; // Unregister the data callback before logging out.
message.Add(0, MessageReference.MDF_M_LOGOFF);
message.Add(0, MessageReferences.MDF_M_LOGOFF);
mdf.Send(message);
if (Consume(mdf, MessageReference.MDF_M_LOGOFF))
if (Consume(mdf, MessageReferences.MDF_M_LOGOFF))
Console.WriteLine($"{DateTime.Now.ToShortTimeString()} - Logged out");

// 10. Disconnect.
mdf.Disconnect();

// 11. Explictly or implictly dispose the managed handles.
static bool Consume(MarketDataFeed mdf, MessageReference messageReference)
static bool Consume(MarketDataFeed mdf, ushort messageReference)
{
DateTime time = DateTime.UtcNow;
do
Expand All @@ -133,7 +133,7 @@ static bool Consume(MarketDataFeed mdf, MessageReference messageReference)
switch (ret)
{
case 1:
while (mdf.GetNextMessage(out MessageReference mref, out ulong _))
while (mdf.GetNextMessage(out ushort mref, out ulong _))
if (mref == messageReference)
return true;
break;
Expand Down
40 changes: 20 additions & 20 deletions Samples/Millistream.Streaming/ConsoleApp/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,14 @@
mdf.Connect("sandbox.millistream.com:9100");

//4. Send a MDF_M_LOGON message to log on.
message.Add(0, MessageReference.MDF_M_LOGON);
message.AddString(Field.MDF_F_USERNAME, "sandbox");
message.AddString(Field.MDF_F_PASSWORD, "sandbox");
message.Add(0, MessageReferences.MDF_M_LOGON);
message.AddString(Fields.MDF_F_USERNAME, "sandbox");
message.AddString(Fields.MDF_F_PASSWORD, "sandbox");
mdf.Send(message);
message.Reset();

//5. Consume and wait for the server to send a MDF_M_LOGONGREETING message.
if (!Consume(mdf, MessageReference.MDF_M_LOGONGREETING))
if (!Consume(mdf, MessageReferences.MDF_M_LOGONGREETING))
{
Console.WriteLine("Failed to connect to the API.");
return;
Expand All @@ -33,33 +33,33 @@
//6. Register a data callback (optional).
mdf.DataCallback = (data, handle) =>
{
while (handle.GetNextMessage(out MessageReference mref, out ulong insref))
while (handle.GetNextMessage(out ushort mref, out ulong insref))
{
Console.WriteLine($"{DateTime.Now.ToShortTimeString()} - " +
$"Received an {mref} message with the following fields:");
"Received a message with the following fields:");
while (handle.GetNextField(out Field field, out ReadOnlySpan<byte> value))
while (handle.GetNextField(out uint tag, out ReadOnlySpan<byte> value))
{
#if NETCOREAPP
Console.WriteLine($"{field}: {Encoding.UTF8.GetString(value)}");
Console.WriteLine($"Field: {tag}, Value: {Encoding.UTF8.GetString(value)}");
#else
Console.WriteLine($"{field}: {Encoding.UTF8.GetString(value.ToArray())}");
Console.WriteLine($"Field: {tag}, Value: {Encoding.UTF8.GetString(value.ToArray())}");
#endif
}
}
};

//7. Request some data.
message.Add(0, MessageReference.MDF_M_REQUEST);
message.AddList(Field.MDF_F_REQUESTCLASS, // <- What kind of data to request.
StringConstants.RequestClasses.MDF_RC_BASICDATA + " " + // <- Basic data
StringConstants.RequestClasses.MDF_RC_QUOTE); // < ...and quotes in this case.
message.Add(0, MessageReferences.MDF_M_REQUEST);
message.AddList(Fields.MDF_F_REQUESTCLASS, // <- What kind of data to request.
RequestClasses.MDF_RC_BASICDATA + " " + // <- Basic data
RequestClasses.MDF_RC_QUOTE); // < ...and quotes in this case.
message.AddNumeric(
Field.MDF_F_REQUESTTYPE, // <- The type of request.
StringConstants.RequestTypes.MDF_RT_FULL // <- Full (image+streaming) in this case.
Fields.MDF_F_REQUESTTYPE, // <- The type of request.
RequestTypes.MDF_RT_FULL // <- Full (image+streaming) in this case.
);
message.AddList(
Field.MDF_F_INSREFLIST, // <- What instrument identifier(s) the request is for.
Fields.MDF_F_INSREFLIST, // <- What instrument identifier(s) the request is for.
"772"); // <- 772 is the unique identifier for Ericsson B.
mdf.Send(message);
message.Reset();
Expand All @@ -76,17 +76,17 @@

// 9. Log off by sending an MDF_M_LOGOFF message (optional).
mdf.DataCallback = null; // Unregister the data callback before logging out.
message.Add(0, MessageReference.MDF_M_LOGOFF);
message.Add(0, MessageReferences.MDF_M_LOGOFF);
mdf.Send(message);
if (Consume(mdf, MessageReference.MDF_M_LOGOFF))
if (Consume(mdf, MessageReferences.MDF_M_LOGOFF))
Console.WriteLine($"{DateTime.Now.ToShortTimeString()} - Logged out");

// 10. Disconnect.
mdf.Disconnect();

// 11. Explictly or implictly dispose the managed handles.

static bool Consume(MarketDataFeed mdf, MessageReference messageReference)
static bool Consume(MarketDataFeed mdf, ushort messageReference)
{
DateTime time = DateTime.UtcNow;
do
Expand All @@ -95,7 +95,7 @@ static bool Consume(MarketDataFeed mdf, MessageReference messageReference)
switch (ret)
{
case 1:
while (mdf.GetNextMessage(out MessageReference mref, out ulong _))
while (mdf.GetNextMessage(out ushort mref, out ulong _))
if (mref == messageReference)
return true;
break;
Expand Down
5 changes: 4 additions & 1 deletion Source/Millistream.Streaming/CompressionLevel.cs
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
namespace Millistream.Streaming
using System;

namespace Millistream.Streaming
{
/// <summary>
/// zlib Compression Levels
/// </summary>
[Obsolete("This enumeration is deprecated will be removed in a future version.")]
public enum CompressionLevel
{
Z_NO_COMPRESSION,
Expand Down
5 changes: 4 additions & 1 deletion Source/Millistream.Streaming/CorporateAction.cs
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
namespace Millistream.Streaming
using System;

namespace Millistream.Streaming
{
/// <summary>
/// Corporate Action Types
/// </summary>
[Obsolete("This enumeration is deprecated and will be removed in a future version.")]
public enum CorporateAction : uint
{
MDF_CA_DIVIDEND,
Expand Down
5 changes: 4 additions & 1 deletion Source/Millistream.Streaming/Field.cs
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
namespace Millistream.Streaming
using System;

namespace Millistream.Streaming
{
/// <summary>
/// Fields / Tags
/// </summary>
[Obsolete("This enumeration is deprecated and has been replaced by the constants in the Fields class.")]
public enum Field : uint
{
MDF_F_LANGUAGE = 0,
Expand Down
Loading

0 comments on commit a959bd2

Please sign in to comment.