Added shutdown functions and changed protection level of API
This commit is contained in:
parent
aa10528971
commit
fa85e53f05
@ -47,7 +47,7 @@ namespace MLAPI
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
private NetworkedObject _networkedObject = null;
|
private NetworkedObject _networkedObject = null;
|
||||||
public uint objectNetworkId
|
public uint networkId
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
@ -66,14 +66,14 @@ namespace MLAPI
|
|||||||
//Change data type
|
//Change data type
|
||||||
private Dictionary<string, int> registeredMessageHandlers = new Dictionary<string, int>();
|
private Dictionary<string, int> registeredMessageHandlers = new Dictionary<string, int>();
|
||||||
|
|
||||||
public int RegisterMessageHandler(string name, Action<int, byte[]> action)
|
protected int RegisterMessageHandler(string name, Action<int, byte[]> action)
|
||||||
{
|
{
|
||||||
int counter = MessageManager.AddIncomingMessageHandler(name, action);
|
int counter = MessageManager.AddIncomingMessageHandler(name, action);
|
||||||
registeredMessageHandlers.Add(name, counter);
|
registeredMessageHandlers.Add(name, counter);
|
||||||
return counter;
|
return counter;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void DeregisterMessageHandler(string name, int counter)
|
protected void DeregisterMessageHandler(string name, int counter)
|
||||||
{
|
{
|
||||||
MessageManager.RemoveIncomingMessageHandler(name, counter);
|
MessageManager.RemoveIncomingMessageHandler(name, counter);
|
||||||
}
|
}
|
||||||
@ -86,7 +86,7 @@ namespace MLAPI
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SendToServer(string messageType, string channelName, byte[] data)
|
protected void SendToServer(string messageType, string channelName, byte[] data)
|
||||||
{
|
{
|
||||||
if (isServer)
|
if (isServer)
|
||||||
{
|
{
|
||||||
@ -98,7 +98,7 @@ namespace MLAPI
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SendToLocalClient(string messageType, string channelName, byte[] data)
|
protected void SendToLocalClient(string messageType, string channelName, byte[] data)
|
||||||
{
|
{
|
||||||
if (!isServer)
|
if (!isServer)
|
||||||
{
|
{
|
||||||
@ -108,7 +108,7 @@ namespace MLAPI
|
|||||||
NetworkingManager.singleton.Send(ownerClientId, messageType, channelName, data);
|
NetworkingManager.singleton.Send(ownerClientId, messageType, channelName, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SendToNonLocalClients(string messageType, string channelName, byte[] data)
|
protected void SendToNonLocalClients(string messageType, string channelName, byte[] data)
|
||||||
{
|
{
|
||||||
if (!isServer)
|
if (!isServer)
|
||||||
{
|
{
|
||||||
@ -118,7 +118,7 @@ namespace MLAPI
|
|||||||
NetworkingManager.singleton.Send(messageType, channelName, data, ownerClientId);
|
NetworkingManager.singleton.Send(messageType, channelName, data, ownerClientId);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SendToClient(int clientId, string messageType, string channelName, byte[] data)
|
protected void SendToClient(int clientId, string messageType, string channelName, byte[] data)
|
||||||
{
|
{
|
||||||
if (!isServer)
|
if (!isServer)
|
||||||
{
|
{
|
||||||
@ -128,7 +128,7 @@ namespace MLAPI
|
|||||||
NetworkingManager.singleton.Send(clientId, messageType, channelName, data);
|
NetworkingManager.singleton.Send(clientId, messageType, channelName, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SendToClients(int[] clientIds, string messageType, string channelName, byte[] data)
|
protected void SendToClients(int[] clientIds, string messageType, string channelName, byte[] data)
|
||||||
{
|
{
|
||||||
if (!isServer)
|
if (!isServer)
|
||||||
{
|
{
|
||||||
@ -138,7 +138,7 @@ namespace MLAPI
|
|||||||
NetworkingManager.singleton.Send(clientIds, messageType, channelName, data);
|
NetworkingManager.singleton.Send(clientIds, messageType, channelName, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SendToClients(List<int> clientIds, string messageType, string channelName, byte[] data)
|
protected void SendToClients(List<int> clientIds, string messageType, string channelName, byte[] data)
|
||||||
{
|
{
|
||||||
if (!isServer)
|
if (!isServer)
|
||||||
{
|
{
|
||||||
@ -148,7 +148,7 @@ namespace MLAPI
|
|||||||
NetworkingManager.singleton.Send(clientIds, messageType, channelName, data);
|
NetworkingManager.singleton.Send(clientIds, messageType, channelName, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SendToClients(string messageType, string channelName, byte[] data)
|
protected void SendToClients(string messageType, string channelName, byte[] data)
|
||||||
{
|
{
|
||||||
if (!isServer)
|
if (!isServer)
|
||||||
{
|
{
|
||||||
@ -158,7 +158,7 @@ namespace MLAPI
|
|||||||
NetworkingManager.singleton.Send(messageType, channelName, data);
|
NetworkingManager.singleton.Send(messageType, channelName, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
public NetworkedObject GetNetworkedObject(uint networkId)
|
protected NetworkedObject GetNetworkedObject(uint networkId)
|
||||||
{
|
{
|
||||||
return SpawnManager.spawnedObjects[networkId];
|
return SpawnManager.spawnedObjects[networkId];
|
||||||
}
|
}
|
||||||
|
@ -147,6 +147,41 @@ namespace MLAPI
|
|||||||
serverClientId = NetworkTransport.Connect(hostId, NetworkConfig.Address, NetworkConfig.Port, 0, out error);
|
serverClientId = NetworkTransport.Connect(hostId, NetworkConfig.Address, NetworkConfig.Port, 0, out error);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void StopServer()
|
||||||
|
{
|
||||||
|
HashSet<int> sentIds = new HashSet<int>();
|
||||||
|
//Don't know if I have to disconnect the clients. I'm assuming the NetworkTransport does all the cleaning on shtudown. But this way the clients get a disconnect message from server (so long it does't get lost)
|
||||||
|
foreach (KeyValuePair<int, NetworkedClient> pair in connectedClients)
|
||||||
|
{
|
||||||
|
if(!sentIds.Contains(pair.Key))
|
||||||
|
{
|
||||||
|
sentIds.Add(pair.Key);
|
||||||
|
NetworkTransport.Disconnect(hostId, pair.Key, out error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
foreach (int clientId in pendingClients)
|
||||||
|
{
|
||||||
|
if (!sentIds.Contains(clientId))
|
||||||
|
{
|
||||||
|
sentIds.Add(clientId);
|
||||||
|
NetworkTransport.Disconnect(hostId, clientId, out error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Shutdown();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void StopHost()
|
||||||
|
{
|
||||||
|
StopServer();
|
||||||
|
//We don't stop client since we dont actually have a transport connection to our own host. We just handle host messages directly in the MLAPI
|
||||||
|
}
|
||||||
|
|
||||||
|
public void StopClient()
|
||||||
|
{
|
||||||
|
NetworkTransport.Disconnect(hostId, serverClientId, out error);
|
||||||
|
Shutdown();
|
||||||
|
}
|
||||||
|
|
||||||
public void StartHost(NetworkingConfiguration netConfig)
|
public void StartHost(NetworkingConfiguration netConfig)
|
||||||
{
|
{
|
||||||
ConnectionConfig cConfig = Init(netConfig);
|
ConnectionConfig cConfig = Init(netConfig);
|
||||||
@ -188,6 +223,15 @@ namespace MLAPI
|
|||||||
private void OnDestroy()
|
private void OnDestroy()
|
||||||
{
|
{
|
||||||
singleton = null;
|
singleton = null;
|
||||||
|
Shutdown();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Shutdown()
|
||||||
|
{
|
||||||
|
isListening = false;
|
||||||
|
isClient = false;
|
||||||
|
isServer = false;
|
||||||
|
NetworkTransport.Shutdown();
|
||||||
}
|
}
|
||||||
|
|
||||||
//Receive stuff
|
//Receive stuff
|
||||||
@ -602,7 +646,7 @@ namespace MLAPI
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void DisconnectClient(int clientId)
|
private void DisconnectClient(int clientId)
|
||||||
{
|
{
|
||||||
if (!isServer)
|
if (!isServer)
|
||||||
return;
|
return;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user