* TCPClient.cs: Add send queue

* packages.config:
* qController.Droid.csproj: Update dependencies
This commit is contained in:
2022-01-07 18:46:28 -06:00
parent 81547f1b47
commit a6b48814f1
3 changed files with 53 additions and 20 deletions
+4 -4
View File
@@ -158,11 +158,11 @@
<package id="Xamarin.AndroidX.MediaRouter" version="1.2.5.2" targetFramework="monoandroid10.0" />
<package id="Xamarin.AndroidX.Migration" version="1.0.8" targetFramework="monoandroid10.0" />
<package id="Xamarin.AndroidX.MultiDex" version="2.0.1.10" targetFramework="monoandroid10.0" />
<package id="Xamarin.AndroidX.Navigation.Common" version="2.3.5.1" targetFramework="monoandroid10.0" />
<package id="Xamarin.AndroidX.Navigation.Runtime" version="2.3.5.1" targetFramework="monoandroid10.0" />
<package id="Xamarin.AndroidX.Navigation.UI" version="2.3.5.1" targetFramework="monoandroid10.0" />
<package id="Xamarin.AndroidX.Navigation.Common" version="2.3.5.3" targetFramework="monoandroid10.0" />
<package id="Xamarin.AndroidX.Navigation.Runtime" version="2.3.5.3" targetFramework="monoandroid10.0" />
<package id="Xamarin.AndroidX.Navigation.UI" version="2.3.5.3" targetFramework="monoandroid10.0" />
<package id="Xamarin.AndroidX.Palette" version="1.0.0.10" targetFramework="monoandroid10.0" />
<package id="Xamarin.AndroidX.Preference" version="1.1.1.9" targetFramework="monoandroid10.0" />
<package id="Xamarin.AndroidX.Preference" version="1.1.1.11" targetFramework="monoandroid10.0" />
<package id="Xamarin.AndroidX.Print" version="1.0.0.10" targetFramework="monoandroid10.0" />
<package id="Xamarin.AndroidX.RecyclerView" version="1.2.1.3" targetFramework="monoandroid10.0" />
<package id="Xamarin.AndroidX.SavedState" version="1.1.0.4" targetFramework="monoandroid10.0" />
+10 -8
View File
@@ -32,6 +32,7 @@
<MandroidI18n>
</MandroidI18n>
<EmbedAssembliesIntoApk>true</EmbedAssembliesIntoApk>
<AndroidEnableMultiDex>true</AndroidEnableMultiDex>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
@@ -53,6 +54,7 @@
<AndroidSigningKeyPass>
</AndroidSigningKeyPass>
<AndroidSupportedAbis>armeabi-v7a;x86;arm64-v8a;x86_64</AndroidSupportedAbis>
<AndroidEnableMultiDex>true</AndroidEnableMultiDex>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
@@ -447,13 +449,13 @@
<HintPath>..\packages\Xamarin.AndroidX.Tracing.Tracing.1.0.0.3\lib\monoandroid90\Xamarin.AndroidX.Tracing.Tracing.dll</HintPath>
</Reference>
<Reference Include="Xamarin.AndroidX.Navigation.Common">
<HintPath>..\packages\Xamarin.AndroidX.Navigation.Common.2.3.5.1\lib\monoandroid90\Xamarin.AndroidX.Navigation.Common.dll</HintPath>
<HintPath>..\packages\Xamarin.AndroidX.Navigation.Common.2.3.5.3\lib\monoandroid90\Xamarin.AndroidX.Navigation.Common.dll</HintPath>
</Reference>
<Reference Include="Xamarin.AndroidX.Navigation.Runtime">
<HintPath>..\packages\Xamarin.AndroidX.Navigation.Runtime.2.3.5.1\lib\monoandroid90\Xamarin.AndroidX.Navigation.Runtime.dll</HintPath>
<HintPath>..\packages\Xamarin.AndroidX.Navigation.Runtime.2.3.5.3\lib\monoandroid90\Xamarin.AndroidX.Navigation.Runtime.dll</HintPath>
</Reference>
<Reference Include="Xamarin.AndroidX.Preference">
<HintPath>..\packages\Xamarin.AndroidX.Preference.1.1.1.9\lib\monoandroid90\Xamarin.AndroidX.Preference.dll</HintPath>
<HintPath>..\packages\Xamarin.AndroidX.Preference.1.1.1.11\lib\monoandroid90\Xamarin.AndroidX.Preference.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Firebase.Encoders">
<HintPath>..\packages\Xamarin.Firebase.Encoders.117.0.0.3\lib\monoandroid90\Xamarin.Firebase.Encoders.dll</HintPath>
@@ -462,7 +464,7 @@
<HintPath>..\packages\Xamarin.Firebase.Encoders.JSON.118.0.0.3\lib\monoandroid90\Xamarin.Firebase.Encoders.JSON.dll</HintPath>
</Reference>
<Reference Include="Xamarin.AndroidX.Navigation.UI">
<HintPath>..\packages\Xamarin.AndroidX.Navigation.UI.2.3.5.1\lib\monoandroid90\Xamarin.AndroidX.Navigation.UI.dll</HintPath>
<HintPath>..\packages\Xamarin.AndroidX.Navigation.UI.2.3.5.3\lib\monoandroid90\Xamarin.AndroidX.Navigation.UI.dll</HintPath>
</Reference>
<Reference Include="Xamarin.AndroidX.Concurrent.Futures">
<HintPath>..\packages\Xamarin.AndroidX.Concurrent.Futures.1.1.0.5\lib\monoandroid90\Xamarin.AndroidX.Concurrent.Futures.dll</HintPath>
@@ -574,8 +576,6 @@
<Import Project="..\packages\Xamarin.AndroidX.Legacy.Support.Core.Utils.1.0.0.10\build\monoandroid90\Xamarin.AndroidX.Legacy.Support.Core.Utils.targets" Condition="Exists('..\packages\Xamarin.AndroidX.Legacy.Support.Core.Utils.1.0.0.10\build\monoandroid90\Xamarin.AndroidX.Legacy.Support.Core.Utils.targets')" />
<Import Project="..\packages\Xamarin.AndroidX.DynamicAnimation.1.0.0.10\build\monoandroid90\Xamarin.AndroidX.DynamicAnimation.targets" Condition="Exists('..\packages\Xamarin.AndroidX.DynamicAnimation.1.0.0.10\build\monoandroid90\Xamarin.AndroidX.DynamicAnimation.targets')" />
<Import Project="..\packages\Xamarin.AndroidX.Media.1.4.3\build\monoandroid90\Xamarin.AndroidX.Media.targets" Condition="Exists('..\packages\Xamarin.AndroidX.Media.1.4.3\build\monoandroid90\Xamarin.AndroidX.Media.targets')" />
<Import Project="..\packages\Xamarin.AndroidX.Navigation.Common.2.3.5.1\build\monoandroid90\Xamarin.AndroidX.Navigation.Common.targets" Condition="Exists('..\packages\Xamarin.AndroidX.Navigation.Common.2.3.5.1\build\monoandroid90\Xamarin.AndroidX.Navigation.Common.targets')" />
<Import Project="..\packages\Xamarin.AndroidX.Navigation.Runtime.2.3.5.1\build\monoandroid90\Xamarin.AndroidX.Navigation.Runtime.targets" Condition="Exists('..\packages\Xamarin.AndroidX.Navigation.Runtime.2.3.5.1\build\monoandroid90\Xamarin.AndroidX.Navigation.Runtime.targets')" />
<Import Project="..\packages\Xamarin.AndroidX.Palette.1.0.0.10\build\monoandroid90\Xamarin.AndroidX.Palette.targets" Condition="Exists('..\packages\Xamarin.AndroidX.Palette.1.0.0.10\build\monoandroid90\Xamarin.AndroidX.Palette.targets')" />
<Import Project="..\packages\Xamarin.AndroidX.RecyclerView.1.2.1.3\build\monoandroid90\Xamarin.AndroidX.RecyclerView.targets" Condition="Exists('..\packages\Xamarin.AndroidX.RecyclerView.1.2.1.3\build\monoandroid90\Xamarin.AndroidX.RecyclerView.targets')" />
<Import Project="..\packages\Xamarin.AndroidX.SlidingPaneLayout.1.1.0.5\build\monoandroid90\Xamarin.AndroidX.SlidingPaneLayout.targets" Condition="Exists('..\packages\Xamarin.AndroidX.SlidingPaneLayout.1.1.0.5\build\monoandroid90\Xamarin.AndroidX.SlidingPaneLayout.targets')" />
@@ -589,14 +589,12 @@
<Import Project="..\packages\Xamarin.AndroidX.ConstraintLayout.2.1.1.2\build\monoandroid90\Xamarin.AndroidX.ConstraintLayout.targets" Condition="Exists('..\packages\Xamarin.AndroidX.ConstraintLayout.2.1.1.2\build\monoandroid90\Xamarin.AndroidX.ConstraintLayout.targets')" />
<Import Project="..\packages\Xamarin.AndroidX.Legacy.Support.Core.UI.1.0.0.11\build\monoandroid90\Xamarin.AndroidX.Legacy.Support.Core.UI.targets" Condition="Exists('..\packages\Xamarin.AndroidX.Legacy.Support.Core.UI.1.0.0.11\build\monoandroid90\Xamarin.AndroidX.Legacy.Support.Core.UI.targets')" />
<Import Project="..\packages\Xamarin.AndroidX.Legacy.Support.V4.1.0.0.10\build\monoandroid90\Xamarin.AndroidX.Legacy.Support.V4.targets" Condition="Exists('..\packages\Xamarin.AndroidX.Legacy.Support.V4.1.0.0.10\build\monoandroid90\Xamarin.AndroidX.Legacy.Support.V4.targets')" />
<Import Project="..\packages\Xamarin.AndroidX.Preference.1.1.1.9\build\monoandroid90\Xamarin.AndroidX.Preference.targets" Condition="Exists('..\packages\Xamarin.AndroidX.Preference.1.1.1.9\build\monoandroid90\Xamarin.AndroidX.Preference.targets')" />
<Import Project="..\packages\Xamarin.AndroidX.Transition.1.4.1.3\build\monoandroid90\Xamarin.AndroidX.Transition.targets" Condition="Exists('..\packages\Xamarin.AndroidX.Transition.1.4.1.3\build\monoandroid90\Xamarin.AndroidX.Transition.targets')" />
<Import Project="..\packages\Xamarin.AndroidX.ViewPager2.1.0.0.12\build\monoandroid90\Xamarin.AndroidX.ViewPager2.targets" Condition="Exists('..\packages\Xamarin.AndroidX.ViewPager2.1.0.0.12\build\monoandroid90\Xamarin.AndroidX.ViewPager2.targets')" />
<Import Project="..\packages\Xamarin.Build.Download.0.11.0\build\Xamarin.Build.Download.targets" Condition="Exists('..\packages\Xamarin.Build.Download.0.11.0\build\Xamarin.Build.Download.targets')" />
<Import Project="..\packages\Xamarin.Firebase.Encoders.117.0.0.3\build\monoandroid90\Xamarin.Firebase.Encoders.targets" Condition="Exists('..\packages\Xamarin.Firebase.Encoders.117.0.0.3\build\monoandroid90\Xamarin.Firebase.Encoders.targets')" />
<Import Project="..\packages\Xamarin.Firebase.Encoders.JSON.118.0.0.3\build\monoandroid90\Xamarin.Firebase.Encoders.JSON.targets" Condition="Exists('..\packages\Xamarin.Firebase.Encoders.JSON.118.0.0.3\build\monoandroid90\Xamarin.Firebase.Encoders.JSON.targets')" />
<Import Project="..\packages\Xamarin.Google.Android.Material.1.4.0.4\build\monoandroid90\Xamarin.Google.Android.Material.targets" Condition="Exists('..\packages\Xamarin.Google.Android.Material.1.4.0.4\build\monoandroid90\Xamarin.Google.Android.Material.targets')" />
<Import Project="..\packages\Xamarin.AndroidX.Navigation.UI.2.3.5.1\build\monoandroid90\Xamarin.AndroidX.Navigation.UI.targets" Condition="Exists('..\packages\Xamarin.AndroidX.Navigation.UI.2.3.5.1\build\monoandroid90\Xamarin.AndroidX.Navigation.UI.targets')" />
<Import Project="..\packages\Xamarin.Google.Guava.ListenableFuture.1.0.0.5\build\monoandroid90\Xamarin.Google.Guava.ListenableFuture.targets" Condition="Exists('..\packages\Xamarin.Google.Guava.ListenableFuture.1.0.0.5\build\monoandroid90\Xamarin.Google.Guava.ListenableFuture.targets')" />
<Import Project="..\packages\Xamarin.AndroidX.Concurrent.Futures.1.1.0.5\build\monoandroid90\Xamarin.AndroidX.Concurrent.Futures.targets" Condition="Exists('..\packages\Xamarin.AndroidX.Concurrent.Futures.1.1.0.5\build\monoandroid90\Xamarin.AndroidX.Concurrent.Futures.targets')" />
<Import Project="..\packages\Xamarin.AndroidX.Browser.1.3.0.8\build\monoandroid90\Xamarin.AndroidX.Browser.targets" Condition="Exists('..\packages\Xamarin.AndroidX.Browser.1.3.0.8\build\monoandroid90\Xamarin.AndroidX.Browser.targets')" />
@@ -608,4 +606,8 @@
<Import Project="..\packages\Xamarin.Jetbrains.Annotations.22.0.0.2\build\monoandroid90\Xamarin.Jetbrains.Annotations.targets" Condition="Exists('..\packages\Xamarin.Jetbrains.Annotations.22.0.0.2\build\monoandroid90\Xamarin.Jetbrains.Annotations.targets')" />
<Import Project="..\packages\Xamarin.Kotlin.StdLib.Common.1.5.31.2\build\monoandroid90\Xamarin.Kotlin.StdLib.Common.targets" Condition="Exists('..\packages\Xamarin.Kotlin.StdLib.Common.1.5.31.2\build\monoandroid90\Xamarin.Kotlin.StdLib.Common.targets')" />
<Import Project="..\packages\Xamarin.Kotlin.StdLib.1.5.31.2\build\monoandroid90\Xamarin.Kotlin.StdLib.targets" Condition="Exists('..\packages\Xamarin.Kotlin.StdLib.1.5.31.2\build\monoandroid90\Xamarin.Kotlin.StdLib.targets')" />
<Import Project="..\packages\Xamarin.AndroidX.Navigation.Common.2.3.5.3\build\monoandroid90\Xamarin.AndroidX.Navigation.Common.targets" Condition="Exists('..\packages\Xamarin.AndroidX.Navigation.Common.2.3.5.3\build\monoandroid90\Xamarin.AndroidX.Navigation.Common.targets')" />
<Import Project="..\packages\Xamarin.AndroidX.Navigation.Runtime.2.3.5.3\build\monoandroid90\Xamarin.AndroidX.Navigation.Runtime.targets" Condition="Exists('..\packages\Xamarin.AndroidX.Navigation.Runtime.2.3.5.3\build\monoandroid90\Xamarin.AndroidX.Navigation.Runtime.targets')" />
<Import Project="..\packages\Xamarin.AndroidX.Preference.1.1.1.11\build\monoandroid90\Xamarin.AndroidX.Preference.targets" Condition="Exists('..\packages\Xamarin.AndroidX.Preference.1.1.1.11\build\monoandroid90\Xamarin.AndroidX.Preference.targets')" />
<Import Project="..\packages\Xamarin.AndroidX.Navigation.UI.2.3.5.3\build\monoandroid90\Xamarin.AndroidX.Navigation.UI.targets" Condition="Exists('..\packages\Xamarin.AndroidX.Navigation.UI.2.3.5.3\build\monoandroid90\Xamarin.AndroidX.Navigation.UI.targets')" />
</Project>
@@ -31,7 +31,12 @@ namespace SharpOSC
}
public delegate void MessageReceivedHandler(object source, MessageEventArgs args);
public event MessageReceivedHandler MessageReceived;
private Queue<OscPacket> SendQueue = new Queue<OscPacket>();
private Thread receivingThread;
private Thread sendThread;
string _address;
TcpClient client;
@@ -54,6 +59,10 @@ namespace SharpOSC
client = new TcpClient(Address, Port);
receivingThread = new Thread(ReceiveLoop);
receivingThread.Start();
sendThread = new Thread(SendLoop);
sendThread.Start();
Log.Debug($"[tcpclient] connected to <{Address}:{Port}>");
return true;
}
@@ -65,6 +74,23 @@ namespace SharpOSC
}
public void QueueForSending(OscPacket packet)
{
SendQueue.Enqueue(packet);
}
private void SendLoop()
{
while (client != null && client.Connected)
{
if (SendQueue.Count > 0)
{
OscPacket packet = SendQueue.Dequeue();
Send(packet);
}
}
}
public void Send(byte[] message)
{
byte[] slipData = SlipEncode(message);
@@ -82,17 +108,20 @@ namespace SharpOSC
{
get
{
return client.Connected;
if (client == null)
return false;
else
return client.Connected;
}
}
public void ReceiveLoop()
{
while (client.Connected)
while (client != null && client.Connected)
{
Receive();
}
Console.WriteLine("TCPClient - Receive Loop has exited for some reason");
//Log.Debug("[tcpclient] - ReceiveLoop has exited");
}
public void Receive()
@@ -121,14 +150,16 @@ namespace SharpOSC
} while (netStream.DataAvailable);
//Console.WriteLine("Raw TCP In: " + System.Text.Encoding.UTF8.GetString(responseData.ToArray()));
OscMessage response = (OscMessage)OscPacket.GetPacket(responseData.Skip(1).ToArray());
OscPacket packet = OscPacket.GetPacket(responseData.Skip(1).ToArray());
OscMessage responseMessage = (OscMessage)packet;
//watch.Stop();
//Console.WriteLine($"TCPCLient - message receive took {watch.ElapsedMilliseconds}ms and {reads} reads");
OnMessageReceived(response);
OnMessageReceived(responseMessage);
}
} catch(Exception e)
}
catch (Exception e)
{
//Log.Debug("TCPClient - Receive Exception: " + e.ToString());
//Console.WriteLine("TCPSENDER - Receive Exception: " + e.ToString());
}
}
@@ -178,4 +209,4 @@ namespace SharpOSC
MessageReceived?.Invoke(this, new MessageEventArgs() { Message = msg });
}
}
}
}