internal void Push(JObject data)
{
var dataString = data.ToString(Formatting.None);
Action callback = () =>
{
Log("SENDING", dataString);
_conn.Send(dataString); //jfis - defer sending in case not currently connected
};
var topic = (string) data["topic"];
var event_ = (string) data["event"];
var payload = (JObject) data["payload"];
var ref_ = (string) data["ref"];
Log("push", $"{topic} {event_} ({ref_})", payload);
if (ref_ == null)
{
throw new Exception("no ref!");
}
if (IsConnected()) //jfis - feels too chaotic, maybe should always go in queue and something else handles queue processing
{
callback();
}
else
{
_sendBuffer.Add(callback);
}
}