/// <summary>
        /// Update session data with provided JSON.
        /// </summary>
        /// <param name="sessionDataId">Id of the session data.</param>
        /// <param name="sessionDataJSON">JSON of the session data.</param>
        /// <param name="fromLocal">Wether or not this call is from the local machine or not. If from local, we ignore SessionData.OnDataUpdated callback.</param>
        public void UpdateData(string sessionDataId, string sessionDataJSON, bool fromLocal)
        {
            if (DebugEnabled)
            {
                Debug.Log("[SessionDataManager] UpdateData (fromLocal: " + fromLocal + ") -> " + sessionDataJSON);
            }

            _dataDict[sessionDataId] = sessionDataJSON;

            if (!fromLocal)
            {
                // Inform active session data component of updated data.
                ISessionData sessionData;
                if (_activeDataInterfaces.TryGetValue(sessionDataId, out sessionData))
                {
                    sessionData.UpdateData(sessionDataJSON);
                }
            }
            else
            {
                // Send data through socket server.
                if (SocketManager.Instance.IsClientRunning)
                {
                    var sender    = SocketManager.Instance.ClientIPAddress;
                    var eventInfo = new SessionDataUpdateEventInfo(sender, sessionDataId, sessionDataJSON);
                    SocketManager.Instance.SendSessionDataUpdateEvent(eventInfo);
                }
            }
        }
        private void HandleSessionDataUpdateEvent(SessionDataUpdateEventInfo udatInfo)
        {
            if (DebugEnabled)
            {
                Debug.Log("[SessionDataManager] Session Data Update Event Recieved Json:\n" + udatInfo.sessionDataJson);
            }

            UpdateData(udatInfo.sessionDataId, udatInfo.sessionDataJson, false);
        }
Exemplo n.º 3
0
        public void SendSessionDataUpdateEvent(SessionDataUpdateEventInfo sdatEventInfo)
        {
            string jsonString = JsonUtility.ToJson(sdatEventInfo);
            string message    = "UDAT" + jsonString;

            SendDgram(message);

            if (DebugEnabled)
            {
                Debug.Log("[SocketManager] Sending Session Data Event: " + jsonString);
            }
        }
 public SessionDataUpdateUnitySocketEvent(SessionDataUpdateEvent updateEvent, SessionDataUpdateEventInfo info)
 {
     _updateEvent = updateEvent;
     _info        = info;
 }
Exemplo n.º 5
0
        private void ProcessDgram(IAsyncResult res)
        {
            try
            {
                byte[] recieved = _client.EndReceive(res, ref _hostEndPoint);

                if (DebugEnabled)
                {
                    Debug.Log("[SocketManager] recieved: " + Encoding.UTF8.GetString(recieved));
                }

                string packet = Encoding.UTF8.GetString(recieved);

                string packetType = packet.Substring(0, 4);
                string packetData = packet.Remove(0, 4);

                switch (packetType)
                {
                case "EVNT":
                    lock (_socketEventQueue) {
                        ISocketEvent socketEvent = new StringUnitySocketEvent(onEventReceived, packetData);
                        _socketEventQueue.Enqueue(socketEvent);
                    }
                    break;

                case "UDAT":
                    lock (_socketEventQueue) {
                        SessionDataUpdateEventInfo info = JsonUtility.FromJson <SessionDataUpdateEventInfo>(packetData);
                        ISocketEvent socketEvent        = new SessionDataUpdateUnitySocketEvent(onSessionDataUpdateReceived, info);
                        _socketEventQueue.Enqueue(socketEvent);
                    }
                    break;

                case "GDAT":
                    lock (_socketEventQueue) {
                        ISocketEvent socketEvent = new StringUnitySocketEvent(onSessionDataGetReceived, packetData);
                        _socketEventQueue.Enqueue(socketEvent);
                    }
                    break;

                case "JRES":
                    lock (_socketEventQueue) {
                        ISocketEvent socketEvent = new ActionSocketEvent(OnConnected);
                        _socketEventQueue.Enqueue(socketEvent);
                    }
                    break;

                case "QUIT":
                    lock (_socketEventQueue) {
                        ISocketEvent socketEvent = new ActionSocketEvent(OnDisconnected);
                        _socketEventQueue.Enqueue(socketEvent);
                    }
                    break;

                default:
                    Debug.Log("[SocketManager] Recieved Unknown Message: /n" + packet);
                    break;
                }
                _client.BeginReceive(new AsyncCallback(ProcessDgram), _client);
            }
            catch (Exception ex)
            {
                lock (_socketEventQueue) {
                    ISocketEvent socketEvent = new ExceptionUnitySocketEvent(onSocketException, ex);
                    _socketEventQueue.Enqueue(socketEvent);
                }
            }
        }