private void streamData(object sender, ElapsedEventArgs e) { streamTimer.Interval = streamRate; DataSources dataSources = new DataSources(); if (toRun.Count + subscriptions.Count > 0) { try { List <string> entries = new List <string>(); APIEntry entry = null; lock (subscriptionLock) { dataSources.vessel = kspAPI.getVessel(); //Only parse the paused argument if the active vessel is null if (dataSources.vessel != null) { toRun.UnionWith(subscriptions); foreach (string s in toRun) { DataSources dataSourcesClone = dataSources.Clone(); string trimedQuotes = s.Trim(); string refArg = trimedQuotes; kspAPI.parseParams(ref refArg, ref dataSourcesClone); kspAPI.process(refArg, out entry); if (entry != null) { dataSourcesClone.setVarName(trimedQuotes); entries.Add(entry.formatter.format(entry.function(dataSourcesClone), dataSourcesClone.getVarName())); } } toRun.Clear(); if (entry != null) { WebSocketFrame frame = new WebSocketFrame(ASCIIEncoding.UTF8.GetBytes(entry.formatter.pack(entries))); byte[] bFrame = frame.AsBytes(); dataRates.addDownLinkPoint(System.DateTime.Now, bFrame.Length * UpLinkDownLinkRate.BITS_PER_BYTE); clientConnection.Send(bFrame); } } else { sendNullMessage(); } } } catch (NullReferenceException) { PluginLogger.debug("Swallowing null reference exception, potentially due to async game state change."); sendNullMessage(); } catch (Exception ex) { PluginLogger.debug("Closing socket due to potential client disconnect:" + ex.GetType().ToString()); close(); } } else { sendNullMessage(); } }
protected void sendNullMessage() { WebSocketFrame frame = new WebSocketFrame(ASCIIEncoding.UTF8.GetBytes("{}")); clientConnection.Send(frame.AsBytes()); }
public void OpCodeText(object sender, FrameEventArgs e) { WebSocketFrame frame = new WebSocketFrame(ASCIIEncoding.UTF8.GetBytes("Echo: " + e.frame.PayloadAsUTF8())); e.clientConnection.Send(frame.AsBytes()); }
private void streamData(object sender, ElapsedEventArgs e) { streamTimer.Interval = streamRate; DataSources dataSources = new DataSources(); if (toRun.Count + subscriptions.Count > 0) { try { List<string> entries = new List<string>(); APIEntry entry = null; lock (subscriptionLock) { dataSources.vessel = kspAPI.getVessel(); //Only parse the paused argument if the active vessel is null if (dataSources.vessel != null) { toRun.UnionWith(subscriptions); foreach (string s in toRun) { DataSources dataSourcesClone = dataSources.Clone(); string trimedQuotes = s.Trim(); string refArg = trimedQuotes; kspAPI.parseParams(ref refArg, ref dataSourcesClone); kspAPI.process(refArg, out entry); if (entry != null) { entry.formatter.setVarName(trimedQuotes); entries.Add(entry.formatter.format(entry.function(dataSourcesClone))); } } toRun.Clear(); if (entry != null) { WebSocketFrame frame = new WebSocketFrame(ASCIIEncoding.UTF8.GetBytes(entry.formatter.pack(entries))); byte[] bFrame = frame.AsBytes(); dataRates.addDownLinkPoint(System.DateTime.Now, bFrame.Length * UpLinkDownLinkRate.BITS_PER_BYTE); clientConnection.Send(bFrame); } } else { sendNullMessage(); } } } catch(NullReferenceException) { PluginLogger.debug("Swallowing null reference exception, potentially due to async game state change."); sendNullMessage(); } catch (Exception ex) { PluginLogger.debug("Closing socket due to potential client disconnect:" + ex.GetType().ToString()); close(); } } else { sendNullMessage(); } }
protected void sendNullMessage() { WebSocketFrame frame = new WebSocketFrame(ASCIIEncoding.UTF8.GetBytes("{}")); clientConnection.Send(frame.AsBytes()); }
public void OpCodeText(object sender, FrameEventArgs e) { WebSocketFrame frame = new WebSocketFrame(ASCIIEncoding.UTF8.GetBytes("Echo: " + e.frame.PayloadAsUTF8())); e.clientConnection.Send(frame.AsBytes()); }