mirror of
https://github.com/evopro-ag/Sharp7Reactive.git
synced 2025-12-17 04:02:52 +00:00
Use file scoped namespaces
This commit is contained in:
@@ -1,5 +1,4 @@
|
||||
using System;
|
||||
using NUnit.Framework;
|
||||
using NUnit.Framework;
|
||||
using Sharp7.Rx.Interfaces;
|
||||
using Shouldly;
|
||||
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
using System.Collections.Generic;
|
||||
using DeepEqual.Syntax;
|
||||
using DeepEqual.Syntax;
|
||||
using NUnit.Framework;
|
||||
using Sharp7.Rx.Enums;
|
||||
|
||||
|
||||
@@ -1,14 +1,12 @@
|
||||
using System;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Reactive;
|
||||
using System.Reactive.Linq;
|
||||
using System.Reactive.Subjects;
|
||||
|
||||
namespace Sharp7.Rx.Basics
|
||||
namespace Sharp7.Rx.Basics;
|
||||
|
||||
internal class ConcurrentSubjectDictionary<TKey, TValue> : IDisposable
|
||||
{
|
||||
internal class ConcurrentSubjectDictionary<TKey, TValue> : IDisposable
|
||||
{
|
||||
private readonly object dictionaryLock = new object();
|
||||
private readonly Func<TKey, TValue> valueFactory;
|
||||
private ConcurrentDictionary<TKey, SubjectWithRefCounter> dictionary;
|
||||
@@ -124,5 +122,4 @@ namespace Sharp7.Rx.Basics
|
||||
public int Counter { get; set; }
|
||||
public ISubject<TValue> Subject { get; set; }
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,7 @@
|
||||
using System;
|
||||
namespace Sharp7.Rx.Basics;
|
||||
|
||||
namespace Sharp7.Rx.Basics
|
||||
internal class DisposableItem<TValue> : IDisposable
|
||||
{
|
||||
internal class DisposableItem<TValue> : IDisposable
|
||||
{
|
||||
private readonly Action disposeAction;
|
||||
|
||||
bool disposed;
|
||||
@@ -33,5 +31,4 @@ namespace Sharp7.Rx.Basics
|
||||
|
||||
disposed = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,18 +1,12 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
namespace Sharp7.Rx.Basics;
|
||||
|
||||
namespace Sharp7.Rx.Basics
|
||||
/// <summary>
|
||||
/// Provides a task scheduler that ensures a maximum concurrency level while
|
||||
/// running on top of the ThreadPool.
|
||||
/// from http://msdn.microsoft.com/en-us/library/ee789351.aspx
|
||||
/// </summary>
|
||||
internal class LimitedConcurrencyLevelTaskScheduler : TaskScheduler
|
||||
{
|
||||
/// <summary>
|
||||
/// Provides a task scheduler that ensures a maximum concurrency level while
|
||||
/// running on top of the ThreadPool.
|
||||
/// from http://msdn.microsoft.com/en-us/library/ee789351.aspx
|
||||
/// </summary>
|
||||
internal class LimitedConcurrencyLevelTaskScheduler : TaskScheduler
|
||||
{
|
||||
/// <summary>Whether the current thread is processing work items.</summary>
|
||||
[ThreadStatic] private static bool currentThreadIsProcessingItems;
|
||||
|
||||
@@ -142,5 +136,4 @@ namespace Sharp7.Rx.Basics
|
||||
}
|
||||
}, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,11 +1,10 @@
|
||||
using System;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Collections.Concurrent;
|
||||
using Sharp7.Rx.Interfaces;
|
||||
|
||||
namespace Sharp7.Rx
|
||||
namespace Sharp7.Rx;
|
||||
|
||||
internal class CacheVariableNameParser : IS7VariableNameParser
|
||||
{
|
||||
internal class CacheVariableNameParser : IS7VariableNameParser
|
||||
{
|
||||
private static readonly ConcurrentDictionary<string, S7VariableAddress> addressCache = new ConcurrentDictionary<string, S7VariableAddress>(StringComparer.OrdinalIgnoreCase);
|
||||
|
||||
private readonly IS7VariableNameParser inner;
|
||||
@@ -16,5 +15,4 @@ namespace Sharp7.Rx
|
||||
}
|
||||
|
||||
public S7VariableAddress Parse(string input) => addressCache.GetOrAdd(input, inner.Parse);
|
||||
}
|
||||
}
|
||||
@@ -1,10 +1,9 @@
|
||||
namespace Sharp7.Rx.Enums
|
||||
namespace Sharp7.Rx.Enums;
|
||||
|
||||
public enum ConnectionState
|
||||
{
|
||||
public enum ConnectionState
|
||||
{
|
||||
Initial,
|
||||
Connected,
|
||||
DisconnectedByUser,
|
||||
ConnectionLost
|
||||
}
|
||||
}
|
||||
@@ -1,10 +1,9 @@
|
||||
namespace Sharp7.Rx.Enums
|
||||
namespace Sharp7.Rx.Enums;
|
||||
|
||||
internal enum CpuType
|
||||
{
|
||||
internal enum CpuType
|
||||
{
|
||||
S7_300,
|
||||
S7_400,
|
||||
S7_1200,
|
||||
S7_1500
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
namespace Sharp7.Rx.Enums
|
||||
namespace Sharp7.Rx.Enums;
|
||||
|
||||
internal enum DbType
|
||||
{
|
||||
internal enum DbType
|
||||
{
|
||||
Bit,
|
||||
String,
|
||||
Byte,
|
||||
@@ -9,5 +9,4 @@
|
||||
Integer,
|
||||
DInteger,
|
||||
ULong
|
||||
}
|
||||
}
|
||||
@@ -1,10 +1,9 @@
|
||||
namespace Sharp7.Rx.Enums
|
||||
namespace Sharp7.Rx.Enums;
|
||||
|
||||
internal enum Operand : byte
|
||||
{
|
||||
internal enum Operand : byte
|
||||
{
|
||||
Input = 69,
|
||||
Output = 65,
|
||||
Marker = 77,
|
||||
Db = 68,
|
||||
}
|
||||
}
|
||||
@@ -1,8 +1,7 @@
|
||||
namespace Sharp7.Rx.Enums
|
||||
namespace Sharp7.Rx.Enums;
|
||||
|
||||
public enum TransmissionMode
|
||||
{
|
||||
public enum TransmissionMode
|
||||
{
|
||||
Cyclic = 3,
|
||||
OnChange = 4,
|
||||
}
|
||||
}
|
||||
@@ -1,13 +1,11 @@
|
||||
using System;
|
||||
using System.Reactive.Disposables;
|
||||
using System.Reactive.Disposables;
|
||||
|
||||
namespace Sharp7.Rx.Extensions
|
||||
namespace Sharp7.Rx.Extensions;
|
||||
|
||||
internal static class DisposableExtensions
|
||||
{
|
||||
internal static class DisposableExtensions
|
||||
{
|
||||
public static void AddDisposableTo(this IDisposable disposable, CompositeDisposable compositeDisposable)
|
||||
{
|
||||
compositeDisposable.Add(disposable);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,13 +1,12 @@
|
||||
using System;
|
||||
using System.Reactive.Concurrency;
|
||||
using System.Reactive.Concurrency;
|
||||
using System.Reactive.Disposables;
|
||||
using System.Reactive.Linq;
|
||||
using Microsoft.Extensions.Logging;
|
||||
|
||||
namespace Sharp7.Rx.Extensions
|
||||
namespace Sharp7.Rx.Extensions;
|
||||
|
||||
internal static class ObservableExtensions
|
||||
{
|
||||
internal static class ObservableExtensions
|
||||
{
|
||||
public static IObservable<T> DisposeMany<T>(this IObservable<T> source)
|
||||
{
|
||||
return Observable.Create<T>(obs =>
|
||||
@@ -79,5 +78,4 @@ namespace Sharp7.Rx.Extensions
|
||||
var deferedObs = Observable.Defer(() => ((++attempt == 1) ? source : source.DelaySubscription(retryDelay, scheduler)));
|
||||
return retryCount > 0 ? reDoCount(deferedObs, retryCount) : reDo(deferedObs);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,16 +1,14 @@
|
||||
using System;
|
||||
using System.Reactive;
|
||||
using System.Reactive;
|
||||
using System.Reactive.Disposables;
|
||||
using System.Reactive.Linq;
|
||||
using System.Reactive.Threading.Tasks;
|
||||
using System.Threading.Tasks;
|
||||
using Sharp7.Rx.Enums;
|
||||
using Sharp7.Rx.Interfaces;
|
||||
|
||||
namespace Sharp7.Rx.Extensions
|
||||
namespace Sharp7.Rx.Extensions;
|
||||
|
||||
public static class PlcExtensions
|
||||
{
|
||||
public static class PlcExtensions
|
||||
{
|
||||
public static IObservable<TReturn> CreateDatatransferWithHandshake<TReturn>(this IPlc plc, string triggerAddress, string ackTriggerAddress, Func<IPlc, Task<TReturn>> readData, bool initialTransfer)
|
||||
{
|
||||
return Observable.Create<TReturn>(async observer =>
|
||||
@@ -70,5 +68,4 @@ namespace Sharp7.Rx.Extensions
|
||||
await plc.SetValue(ackTriggerAddress, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,18 +1,15 @@
|
||||
using System;
|
||||
using System.Threading.Tasks;
|
||||
using JetBrains.Annotations;
|
||||
using JetBrains.Annotations;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Sharp7.Rx.Enums;
|
||||
|
||||
namespace Sharp7.Rx.Interfaces
|
||||
namespace Sharp7.Rx.Interfaces;
|
||||
|
||||
[NoReorder]
|
||||
public interface IPlc : IDisposable
|
||||
{
|
||||
[NoReorder]
|
||||
public interface IPlc : IDisposable
|
||||
{
|
||||
IObservable<TValue> CreateNotification<TValue>(string variableName, TransmissionMode transmissionMode);
|
||||
Task SetValue<TValue>(string variableName, TValue value);
|
||||
Task<TValue> GetValue<TValue>(string variableName);
|
||||
IObservable<ConnectionState> ConnectionState { get; }
|
||||
ILogger Logger { get; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,15 +1,11 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using JetBrains.Annotations;
|
||||
using JetBrains.Annotations;
|
||||
using Sharp7.Rx.Enums;
|
||||
|
||||
namespace Sharp7.Rx.Interfaces
|
||||
namespace Sharp7.Rx.Interfaces;
|
||||
|
||||
[NoReorder]
|
||||
internal interface IS7Connector : IDisposable
|
||||
{
|
||||
[NoReorder]
|
||||
internal interface IS7Connector : IDisposable
|
||||
{
|
||||
IObservable<ConnectionState> ConnectionState { get; }
|
||||
Task InitializeAsync();
|
||||
|
||||
@@ -22,5 +18,4 @@ namespace Sharp7.Rx.Interfaces
|
||||
Task<ushort> WriteBytes(Operand operand, ushort startByteAdress, byte[] data, ushort dBNr, CancellationToken token);
|
||||
|
||||
Task<Dictionary<string, byte[]>> ExecuteMultiVarRequest(IReadOnlyList<string> variableNames);
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,6 @@
|
||||
namespace Sharp7.Rx.Interfaces
|
||||
namespace Sharp7.Rx.Interfaces;
|
||||
|
||||
internal interface IS7VariableNameParser
|
||||
{
|
||||
internal interface IS7VariableNameParser
|
||||
{
|
||||
S7VariableAddress Parse(string input);
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,7 @@
|
||||
using System.Collections.Generic;
|
||||
namespace Sharp7.Rx;
|
||||
|
||||
namespace Sharp7.Rx
|
||||
public static class S7ErrorCodes
|
||||
{
|
||||
public static class S7ErrorCodes
|
||||
{
|
||||
/// <summary>
|
||||
/// This list is not exhaustive and should be considered work in progress.
|
||||
/// </summary>
|
||||
@@ -23,5 +21,4 @@ namespace Sharp7.Rx
|
||||
{
|
||||
return !notDisconnectedErrorCodes.Contains(errorCode);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,13 +1,12 @@
|
||||
using System;
|
||||
using System.Buffers.Binary;
|
||||
using System.Buffers.Binary;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text;
|
||||
using Sharp7.Rx.Enums;
|
||||
|
||||
namespace Sharp7.Rx
|
||||
namespace Sharp7.Rx;
|
||||
|
||||
internal static class S7ValueConverter
|
||||
{
|
||||
internal static class S7ValueConverter
|
||||
{
|
||||
public static TValue ConvertToType<TValue>(byte[] buffer, S7VariableAddress address)
|
||||
{
|
||||
if (typeof(TValue) == typeof(bool))
|
||||
@@ -81,5 +80,4 @@ namespace Sharp7.Rx
|
||||
[FieldOffset(0)] public uint UInt32;
|
||||
[FieldOffset(0)] public float Single;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,16 +1,15 @@
|
||||
using JetBrains.Annotations;
|
||||
using Sharp7.Rx.Enums;
|
||||
|
||||
namespace Sharp7.Rx
|
||||
namespace Sharp7.Rx;
|
||||
|
||||
[NoReorder]
|
||||
internal class S7VariableAddress
|
||||
{
|
||||
[NoReorder]
|
||||
internal class S7VariableAddress
|
||||
{
|
||||
public Operand Operand { get; set; }
|
||||
public ushort DbNr { get; set; }
|
||||
public ushort Start { get; set; }
|
||||
public ushort Length { get; set; }
|
||||
public byte Bit { get; set; }
|
||||
public DbType Type { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,14 +1,12 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.Globalization;
|
||||
using System.Text.RegularExpressions;
|
||||
using Sharp7.Rx.Enums;
|
||||
using Sharp7.Rx.Interfaces;
|
||||
|
||||
namespace Sharp7.Rx
|
||||
namespace Sharp7.Rx;
|
||||
|
||||
internal class S7VariableNameParser : IS7VariableNameParser
|
||||
{
|
||||
internal class S7VariableNameParser : IS7VariableNameParser
|
||||
{
|
||||
private static readonly Regex regex = new Regex(@"^(?<operand>db{1})(?<dbNr>\d{1,4})\.?(?<type>dbx|x|s|string|b|dbb|d|int|dbw|w|dint|dul|dulint|dulong|){1}(?<start>\d+)(\.(?<bitOrLength>\d+))?$", RegexOptions.IgnoreCase | RegexOptions.Compiled | RegexOptions.CultureInvariant);
|
||||
|
||||
private static readonly IReadOnlyDictionary<string, DbType> types = new Dictionary<string, DbType>(StringComparer.OrdinalIgnoreCase)
|
||||
@@ -80,5 +78,4 @@ namespace Sharp7.Rx
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,10 +1,9 @@
|
||||
namespace Sharp7.Rx.Settings
|
||||
namespace Sharp7.Rx.Settings;
|
||||
|
||||
internal class PlcConnectionSettings
|
||||
{
|
||||
internal class PlcConnectionSettings
|
||||
{
|
||||
public int CpuMpiAddress { get; set; }
|
||||
public string IpAddress { get; set; }
|
||||
public int Port { get; set; }
|
||||
public int RackNumber { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,11 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Reactive.Disposables;
|
||||
using System.Reactive.Disposables;
|
||||
using System.Reactive.Linq;
|
||||
using System.Reactive.Subjects;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Sharp7.Rx.Basics;
|
||||
using Sharp7.Rx.Enums;
|
||||
@@ -14,10 +9,10 @@ using Sharp7.Rx.Interfaces;
|
||||
using Sharp7.Rx.Resources;
|
||||
using Sharp7.Rx.Settings;
|
||||
|
||||
namespace Sharp7.Rx
|
||||
namespace Sharp7.Rx;
|
||||
|
||||
internal class Sharp7Connector : IS7Connector
|
||||
{
|
||||
internal class Sharp7Connector : IS7Connector
|
||||
{
|
||||
private readonly BehaviorSubject<ConnectionState> connectionStateSubject = new BehaviorSubject<ConnectionState>(Enums.ConnectionState.Initial);
|
||||
private readonly int cpuSlotNr;
|
||||
|
||||
@@ -275,5 +270,4 @@ namespace Sharp7.Rx
|
||||
{
|
||||
Dispose(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,13 +1,8 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using System.Diagnostics;
|
||||
using System.Reactive;
|
||||
using System.Reactive.Disposables;
|
||||
using System.Reactive.Linq;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Sharp7.Rx.Basics;
|
||||
using Sharp7.Rx.Enums;
|
||||
@@ -15,10 +10,10 @@ using Sharp7.Rx.Extensions;
|
||||
using Sharp7.Rx.Interfaces;
|
||||
using Sharp7.Rx.Settings;
|
||||
|
||||
namespace Sharp7.Rx
|
||||
namespace Sharp7.Rx;
|
||||
|
||||
public class Sharp7Plc : IPlc
|
||||
{
|
||||
public class Sharp7Plc : IPlc
|
||||
{
|
||||
protected readonly CompositeDisposable Disposables = new CompositeDisposable();
|
||||
private readonly ConcurrentSubjectDictionary<string, byte[]> multiVariableSubscriptions = new ConcurrentSubjectDictionary<string, byte[]>(StringComparer.InvariantCultureIgnoreCase);
|
||||
private readonly List<long> performanceCoutner = new List<long>(1000);
|
||||
@@ -280,5 +275,4 @@ namespace Sharp7.Rx
|
||||
{
|
||||
Dispose(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user