public static bool CloseConnection(string Data) { PushConnectNetworkData pdata = null; NetRedirLegacy redir = null; try { pdata = JsonConvert.DeserializeObject <PushConnectNetworkData>(Data); } catch (Exception ee) { Debug.WriteLine(ee.ToString()); } if (pdata == null) { return(false); } lock (Locker) { if (Redirs.ContainsKey(pdata.GUID) == false) { return(false); } redir = Redirs[pdata.GUID]; } return(redir.CloseConnection()); }
public bool SendDataToSocket(PushConnectNetworkData data) { try { if (SequenceBuffer.ContainsKey(RunningSequence) == true) { do { RunningSequence++; socket.Send(SequenceBuffer[RunningSequence - 1].data); SequenceBuffer.Remove(RunningSequence - 1); } while (SequenceBuffer.ContainsKey(RunningSequence) == true); } if (RunningSequence != data.Seq) { RunningSequence++; SequenceBuffer.Add(data.Seq, data); return(true); } //Debug.WriteLine("TX: " + SessionID + " " + BitConverter.ToString(data)); socket.Send(data.data); RunningSequence++; LastUpdated = DateTime.Now; } catch { return(false); } return(true); }
public PushConnectNetworkData GetData() { PushConnectNetworkData res = new PushConnectNetworkData(); res.GUID = SessionID; res.Result = 2; int Count = 0; LastUpdated = DateTime.Now; lock (RXLocker) { Count = RXStack.Count; } if (Count > 0) { lock (RXLocker) { res.Seq = Sequence; Sequence++; res.data = RXStack[0]; RXStack.RemoveAt(0); //Debug.WriteLine("RX: " + SessionID + " POP " + BitConverter.ToString(res.data)); } res.Result = 0; return(res); } if (Count == 0) { lock (RXLocker) { RXEvent.Reset(); } if (RXEvent.WaitOne(30000) == false) { res.Result = 1; return(res); } lock (RXLocker) { res.Seq = Sequence; Sequence++; res.Result = 0; res.data = RXStack[0]; RXStack.RemoveAt(0); //Debug.WriteLine("RX: " + SessionID + " POP " + BitConverter.ToString(res.data)); } return(res); } return(res); }
public static PushConnectNetworkData ProcessDataRecv(string SessionID) { PushConnectNetworkData res = new PushConnectNetworkData(); res.GUID = SessionID; res.Result = 0x16; NetRedirLegacy r = null; lock (Locker) { if (Redirs.ContainsKey(SessionID) == false) { return(res); } r = Redirs[SessionID]; } return(r.GetData()); }
public static PushConnectNetworkData PullNetData(string ReqString, Network net) { PushConnectNetworkData Res = new PushConnectNetworkData(); PushConnectNetworkData req; try { req = JsonConvert.DeserializeObject <PushConnectNetworkData>(ReqString); } catch (Exception ee) { Debug.WriteLine(ee.ToString()); Res.Result = 0x16; return(Res); } return(MainNetRedir.ProcessDataRecv(req.GUID)); }
public RESTStatus PushNetworkCloseData(SQLLib sql, PushConnectNetworkData data, NetworkConnectionInfo ni, string MachineID) { if (ni.HasAcl(ACLFlags.ChangeServerSettings) == false) { ni.Error = "Access denied"; ni.ErrorID = ErrorFlags.AccessDenied; return(RESTStatus.Denied); } RemoteNetworkConnectionWSCrosser.CloseSession(data.GUID); string sess = Guid.NewGuid().ToString(); data.data = null; PushData p = new PushData(); p.Action = "netclosedata2"; p.ReplyID = sess; p.AdditionalData1 = JsonConvert.SerializeObject(data); PushServiceHelper.SendPushService(MachineID, p, 1); PushDataResponse resp = PushServiceHelper.PopResponse(MachineID, 1, sess); if (resp == null) { ni.Error = "No response"; ni.ErrorID = ErrorFlags.NoData; return(RESTStatus.NoContent); } try { res3 = JsonConvert.DeserializeObject <PushConnectNetworkResult>(resp.Data.ToString()); } catch { ni.Error = "Faulty data"; ni.ErrorID = ErrorFlags.NoData; return(RESTStatus.NoContent); } return(RESTStatus.Success); }