فهرست منبع

Fixed broken Transport in GPS Engine

frogsoftware 1 سال پیش
والد
کامیت
33e274557f
2فایلهای تغییر یافته به همراه9 افزوده شده و 6 حذف شده
  1. 4 3
      prs.server/Engines/GPS/GPSEngine.cs
  2. 5 3
      prs.services/Engine.cs

+ 4 - 3
prs.server/Engines/GPS/GPSEngine.cs

@@ -161,7 +161,7 @@ public class GPSEngine : Engine<GPSServerProperties>
 {
     private Listener<SigfoxHandler, SigfoxHandlerProperties> sigfoxListener;
     private OEMListener oemListener;
-    private RpcClientPipeTransport transport;
+    
 
     private GPSDeviceCache DeviceCache = new();
 
@@ -235,7 +235,7 @@ public class GPSEngine : Engine<GPSServerProperties>
 
     private void UpdateServer()
     {
-        if (!transport.IsConnected()) return;
+        if (Transport?.IsConnected() != true) return;
 
         // Cache a set of fifty, so that we're not running baack and forth to the filesystem all the time.
         if(LocationQueueCache.Count == 0)
@@ -307,7 +307,8 @@ public class GPSEngine : Engine<GPSServerProperties>
     public override void Stop()
     {
         oemListener.Stop();
-        sigfoxListener.Stop();
+        if (sigfoxListener != null)
+            sigfoxListener.Stop();
         UpdateServerTimer.Stop();
         RefreshDevicesTimer.Stop();
     }

+ 5 - 3
prs.services/Engine.cs

@@ -28,6 +28,8 @@ public abstract class Engine<TProperties> : IEngine where TProperties : ServerPr
 {
     
     private RpcServerPipeTransport _enginemanager;
+    
+    protected  RpcClientPipeTransport? Transport;
 
     public TProperties Properties { get; private set; }
     public abstract void Run();
@@ -88,9 +90,9 @@ public abstract class Engine<TProperties> : IEngine where TProperties : ServerPr
     /// </summary>
     protected void InitialiseConnection(string serverKey, Platform clientPlatform)
     {
-        var transport = new RpcClientPipeTransport(DatabaseServerProperties.GetPipeName(serverKey, true));
-        ClientFactory.SetClientType(typeof(RpcClient<>), clientPlatform, Version, transport);
-        transport.OnClose += Transport_OnClose;
+        Transport = new RpcClientPipeTransport(DatabaseServerProperties.GetPipeName(serverKey, true));
+        ClientFactory.SetClientType(typeof(RpcClient<>), clientPlatform, Version, Transport);
+        Transport.OnClose += Transport_OnClose;
         CheckConnection();
     }