added reason of disconnect at callback

This commit is contained in:
2023-05-08 00:16:43 +03:00
parent 91d8516ac9
commit 907bd2611e
9 changed files with 33 additions and 37 deletions
+3 -1
View File
@@ -1,5 +1,7 @@
using Ragon.Protocol;
namespace Ragon.Client.Simulation; namespace Ragon.Client.Simulation;
public class Game : IRagonListener public class Game : IRagonListener
@@ -63,7 +65,7 @@ public class Game : IRagonListener
RagonLog.Trace("Left"); RagonLog.Trace("Left");
} }
public void OnDisconnected(RagonClient client) public void OnDisconnected(RagonClient client, RagonDisconnect ragonDisconnect)
{ {
RagonLog.Trace("Disconnected"); RagonLog.Trace("Disconnected");
} }
@@ -16,6 +16,7 @@
using ENet; using ENet;
using Ragon.Protocol;
using Event = ENet.Event; using Event = ENet.Event;
using EventType = ENet.EventType; using EventType = ENet.EventType;
@@ -31,7 +32,7 @@ namespace Ragon.Client
public Action<byte[]> OnData { get; set; } public Action<byte[]> OnData { get; set; }
public Action OnConnected { get; set; } public Action OnConnected { get; set; }
public Action<DisconnectReason> OnDisconnected { get; set; } public Action<RagonDisconnect> OnDisconnected { get; set; }
public ulong BytesSent { get; } public ulong BytesSent { get; }
public ulong BytesReceived { get; } public ulong BytesReceived { get; }
public int Ping { get; } public int Ping { get; }
@@ -98,10 +99,10 @@ namespace Ragon.Client
OnConnected?.Invoke(); OnConnected?.Invoke();
break; break;
case EventType.Disconnect: case EventType.Disconnect:
OnDisconnected?.Invoke(DisconnectReason.MANUAL); OnDisconnected?.Invoke(RagonDisconnect.SERVER);
break; break;
case EventType.Timeout: case EventType.Timeout:
OnDisconnected?.Invoke(DisconnectReason.TIMEOUT); OnDisconnected?.Invoke(RagonDisconnect.TIMEOUT);
break; break;
case EventType.Receive: case EventType.Receive:
var data = new byte[_netEvent.Packet.Length]; var data = new byte[_netEvent.Packet.Length];
@@ -16,6 +16,7 @@
using ENet; using ENet;
using Ragon.Protocol;
using Event = ENet.Event; using Event = ENet.Event;
using EventType = ENet.EventType; using EventType = ENet.EventType;
@@ -31,7 +32,7 @@ namespace Ragon.Client
public Action<byte[]> OnData { get; set; } public Action<byte[]> OnData { get; set; }
public Action OnConnected { get; set; } public Action OnConnected { get; set; }
public Action<DisconnectReason> OnDisconnected { get; set; } public Action<RagonDisconnect> OnDisconnected { get; set; }
public ulong BytesSent { get; } public ulong BytesSent { get; }
public ulong BytesReceived { get; } public ulong BytesReceived { get; }
public int Ping { get; } public int Ping { get; }
@@ -99,10 +100,10 @@ namespace Ragon.Client
OnConnected?.Invoke(); OnConnected?.Invoke();
break; break;
case EventType.Disconnect: case EventType.Disconnect:
OnDisconnected?.Invoke(DisconnectReason.MANUAL); OnDisconnected?.Invoke(RagonDisconnect.SERVER);
break; break;
case EventType.Timeout: case EventType.Timeout:
OnDisconnected?.Invoke(DisconnectReason.TIMEOUT); OnDisconnected?.Invoke(RagonDisconnect.TIMEOUT);
break; break;
case EventType.Receive: case EventType.Receive:
var data = new byte[_netEvent.Packet.Length]; var data = new byte[_netEvent.Packet.Length];
@@ -1,23 +0,0 @@
/*
* Copyright 2023 Eduard Kargin <kargin.eduard@gmail.com>
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
namespace Ragon.Client;
public enum DisconnectReason
{
MANUAL,
TIMEOUT,
}
@@ -15,6 +15,8 @@
*/ */
using Ragon.Protocol;
namespace Ragon.Client; namespace Ragon.Client;
public interface INetworkConnection: IRagonConnection public interface INetworkConnection: IRagonConnection
@@ -23,7 +25,7 @@ public interface INetworkConnection: IRagonConnection
public INetworkChannel Unreliable { get; } public INetworkChannel Unreliable { get; }
public Action<byte[]> OnData { get; set; } public Action<byte[]> OnData { get; set; }
public Action OnConnected { get; set; } public Action OnConnected { get; set; }
public Action<DisconnectReason> OnDisconnected { get; set; } public Action<RagonDisconnect> OnDisconnected { get; set; }
public ulong BytesSent { get; } public ulong BytesSent { get; }
public ulong BytesReceived { get; } public ulong BytesReceived { get; }
public int Ping { get; } public int Ping { get; }
@@ -14,10 +14,12 @@
* limitations under the License. * limitations under the License.
*/ */
using Ragon.Protocol;
namespace Ragon.Client; namespace Ragon.Client;
public interface IRagonConnectionListener public interface IRagonConnectionListener
{ {
void OnConnected(RagonClient client); void OnConnected(RagonClient client);
void OnDisconnected(RagonClient client); void OnDisconnected(RagonClient client, RagonDisconnect reason);
} }
+3 -3
View File
@@ -110,7 +110,7 @@ namespace Ragon.Client
_room.Cleanup(); _room.Cleanup();
_connection.Disconnect(); _connection.Disconnect();
OnDisconnected(DisconnectReason.MANUAL); OnDisconnected(RagonDisconnect.MANUAL);
} }
public void Update(float dt) public void Update(float dt)
@@ -181,11 +181,11 @@ namespace Ragon.Client
_status = RagonStatus.CONNECTED; _status = RagonStatus.CONNECTED;
} }
private void OnDisconnected(DisconnectReason reason) private void OnDisconnected(RagonDisconnect reason)
{ {
RagonLog.Trace($"Disconnected: {reason}"); RagonLog.Trace($"Disconnected: {reason}");
_listenerList.OnDisconnected(); _listenerList.OnDisconnected(reason);
_status = RagonStatus.DISCONNECTED; _status = RagonStatus.DISCONNECTED;
} }
+4 -2
View File
@@ -14,6 +14,8 @@
* limitations under the License. * limitations under the License.
*/ */
using Ragon.Protocol;
namespace Ragon.Client namespace Ragon.Client
{ {
internal class RagonListenerList internal class RagonListenerList
@@ -210,10 +212,10 @@ namespace Ragon.Client
listener.OnConnected(_client); listener.OnConnected(_client);
} }
public void OnDisconnected() public void OnDisconnected(RagonDisconnect disconnect)
{ {
foreach (var listener in _connectionListeners) foreach (var listener in _connectionListeners)
listener.OnDisconnected(_client); listener.OnDisconnected(_client, disconnect);
} }
} }
} }
@@ -0,0 +1,9 @@
namespace Ragon.Protocol
{
public enum RagonDisconnect
{
MANUAL,
TIMEOUT,
SERVER,
}
}