private void HandleMessage(NavicoJson.DList dl) { int groupId = Convert.ToInt32(dl.DataList.groupId); if (m_DataGroups.ContainsKey(groupId)) { foreach (int i in dl.DataList.list) { m_DataGroups [groupId].Add(i); } } m_DataGroupWaitingList.Remove(groupId); if (m_DataGroupWaitingList.Count == 0) { bool containsData = false; foreach (List <int> list in m_DataGroups.Values) { if (list.Count > 0) { containsData = true; break; } } if (containsData == false && m_DataGroups.ContainsKey(40) == false) { m_DataGroups.Add(40, new List <int> ()); m_DataGroupWaitingList.Add(40); m_WsClient.Send("{\"DataListReq\":{\"groupId\":40}}"); } else { StartNextTransaction(); } } }
private void OnSocketMessage(object sender, MessageEventArgs e) { lock (this) { JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer(); if (e.Type == Opcode.Text) { String json = e.Data.ToString(); if (json.StartsWith("{\"DataInfo\":")) { NavicoJson.IncomingDataInfo info = javaScriptSerializer.Deserialize <NavicoJson.IncomingDataInfo>(json); if (info.IsValid()) { HandleMessage(info); } } else if (json.StartsWith("{\"DeviceList\":")) { NavicoJson.IncomingDeviceList deviceList = javaScriptSerializer.Deserialize <NavicoJson.IncomingDeviceList> (json); if (deviceList.IsValid()) { HandleMessage(deviceList); } } else { NavicoJson.IncomingData data = javaScriptSerializer.Deserialize <NavicoJson.IncomingData> (json); if (data.IsValid()) { HandleMessage(data); } else { NavicoJson.DList dl = javaScriptSerializer.Deserialize <NavicoJson.DList> (json); if (dl.IsValid()) { HandleMessage(dl); } } } } } }