aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Tango.Transport/Adapters/MultiTransportAdapter.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Software/Visual_Studio/Tango.Transport/Adapters/MultiTransportAdapter.cs')
-rw-r--r--Software/Visual_Studio/Tango.Transport/Adapters/MultiTransportAdapter.cs124
1 files changed, 0 insertions, 124 deletions
diff --git a/Software/Visual_Studio/Tango.Transport/Adapters/MultiTransportAdapter.cs b/Software/Visual_Studio/Tango.Transport/Adapters/MultiTransportAdapter.cs
deleted file mode 100644
index f4f7eb9cf..000000000
--- a/Software/Visual_Studio/Tango.Transport/Adapters/MultiTransportAdapter.cs
+++ /dev/null
@@ -1,124 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Collections.ObjectModel;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace Tango.Transport.Adapters
-{
- /// <summary>
- /// Experimental...
- /// </summary>
- /// <seealso cref="Tango.Transport.TransportAdapterBase" />
- public class MultiTransportAdapter : TransportAdapterBase
- {
- public class MultiTransportAdapterDataAvailableEventArgs : EventArgs
- {
- public ITransportAdapter Adapter { get; set; }
- public byte[] Data { get; set; }
- }
-
- public class MultiTransportAdapterStateChangedEventArgs : EventArgs
- {
- public ITransportAdapter Adapter { get; set; }
- public TransportComponentState State { get; set; }
- }
-
- public event EventHandler<MultiTransportAdapterDataAvailableEventArgs> AdapterDataAvailable;
- public event EventHandler<MultiTransportAdapterStateChangedEventArgs> AdapterStateChangedAvailable;
-
- public ReadOnlyCollection<ITransportAdapter> Adapters { get; private set; }
-
- public MultiTransportAdapter()
- {
- Adapters = new ReadOnlyCollection<ITransportAdapter>(new List<ITransportAdapter>());
- ComponentName = "Multi Transport Adapter";
- }
-
- public override void Write(byte[] data, bool immidiate = false)
- {
- Adapters.ToList().ForEach(x => x.Write(data));
- }
-
- public void Write(byte[] data, ITransportAdapter adapter)
- {
- adapter.Write(data);
- }
-
- public override async Task Connect()
- {
- foreach (var adapter in Adapters.ToList().Where(x => x.State != TransportComponentState.Connected))
- {
- await adapter.Connect();
- }
- }
-
- public override async Task Disconnect()
- {
- foreach (var adapter in Adapters.ToList())
- {
- await adapter.Disconnect();
- }
- }
-
- public override void Dispose()
- {
- foreach (var adapter in Adapters.ToList())
- {
- adapter.Dispose();
- }
- }
-
- public void AddAdapter(ITransportAdapter adapter)
- {
- List<ITransportAdapter> list = Adapters.ToList();
- list.Add(adapter);
- Adapters = new ReadOnlyCollection<ITransportAdapter>(list);
-
- adapter.DataAvailable += Adapter_DataAvailable;
- adapter.StateChanged += Adapter_StateChanged;
- }
-
- public void RemoveAdapter(ITransportAdapter adapter)
- {
- List<ITransportAdapter> list = Adapters.ToList();
- list.Remove(adapter);
- Adapters = new ReadOnlyCollection<ITransportAdapter>(list);
-
- adapter.DataAvailable -= Adapter_DataAvailable;
- adapter.StateChanged -= Adapter_StateChanged;
- }
-
- public void ClearAdapters()
- {
- foreach (var adapter in Adapters.ToList())
- {
- adapter.DataAvailable -= Adapter_DataAvailable;
- adapter.StateChanged -= Adapter_StateChanged;
- }
-
- Adapters = new ReadOnlyCollection<ITransportAdapter>(new List<ITransportAdapter>());
- }
-
- private void Adapter_StateChanged(object sender, TransportComponentState state)
- {
- AdapterStateChangedAvailable?.Invoke(this, new MultiTransportAdapterStateChangedEventArgs()
- {
- Adapter = sender as ITransportAdapter,
- State = state,
- });
- }
-
- private void Adapter_DataAvailable(object sender, byte[] data)
- {
- OnDataAvailable(data);
-
- AdapterDataAvailable?.Invoke(this, new MultiTransportAdapterDataAvailableEventArgs()
- {
- Adapter = sender as ITransportAdapter,
- Data = data,
- });
- }
- }
-}