protected virtual void OnReceive(ServerSocketReceiveEventArgs e) { if (this.Receive != null) { this.Receive(this, e); } }
protected virtual void OnReceive(ServerSocketReceiveEventArgs e) { try { this._server.OnReceive2(e); } catch (Exception ex) { this.OnError(ex); } }
protected virtual void OnReceive(object sender, ServerSocketReceiveEventArgs e) { switch (e.Messager.Action) { case "GetDatabases": ClientInfo ci = e.Messager.Arg as ClientInfo; if (ci == null) { e.AcceptSocket.AccessDenied(); } else { CodeBuild build = new CodeBuild(ci, e.AcceptSocket); lock (_builds_lock) { _builds.Remove(e.AcceptSocket.Id); _builds.Add(e.AcceptSocket.Id, build); } List <DatabaseInfo> dbs = build.GetDatabases(); SocketMessager messager = new SocketMessager(e.Messager.Action, dbs); messager.Id = e.Messager.Id; e.AcceptSocket.Write(messager); } break; case "GetTablesByDatabase": string database = string.Concat(e.Messager.Arg); if (string.IsNullOrEmpty(database)) { e.AcceptSocket.AccessDenied(); } else { CodeBuild build = null; if (!_builds.TryGetValue(e.AcceptSocket.Id, out build)) { e.AcceptSocket.AccessDenied(); } else { List <TableInfo> tables = build.GetTablesByDatabase(database); SocketMessager messager = new SocketMessager(e.Messager.Action, tables); messager.Id = e.Messager.Id; e.AcceptSocket.Write(messager); } } break; case "Build": object[] parms = e.Messager.Arg as object[]; if (parms.Length < 4) { e.AcceptSocket.AccessDenied(); } else { string solutionName = string.Concat(parms[0]); bool isSolution, isMakeAdmin, isDownloadRes; string op10 = string.Concat(parms[2]); if (string.IsNullOrEmpty(solutionName) || !bool.TryParse(string.Concat(parms[1]), out isSolution) || string.IsNullOrEmpty(op10)) { e.AcceptSocket.AccessDenied(); } else { isMakeAdmin = false; isDownloadRes = false; if (parms.Length >= 4) { bool.TryParse(string.Concat(parms[3]), out isMakeAdmin); } if (parms.Length >= 5) { bool.TryParse(string.Concat(parms[4]), out isDownloadRes); } CodeBuild build = null; if (!_builds.TryGetValue(e.AcceptSocket.Id, out build)) { e.AcceptSocket.AccessDenied(); } else { List <bool> outputs = new List <bool>(); char[] cs = op10.ToCharArray(); foreach (char c in cs) { outputs.Add(c == '1'); } build.SetOutput(outputs.ToArray()); object parm = null; try { parm = build.Build(solutionName, isSolution, isMakeAdmin, isDownloadRes); } catch (Exception ex) { parm = ex; } SocketMessager messager = new SocketMessager(e.Messager.Action, parm); messager.Id = e.Messager.Id; e.AcceptSocket.Write(messager); } } } break; default: e.AcceptSocket.AccessDenied(); break; } }
public AcceptSocket(ServerSocket server, TcpClient tcpClient, int id) { this._running = true; this._id = id; this._server = server; this._tcpClient = tcpClient; this._lastActive = DateTime.Now; this._thread = new Thread(delegate() { while (this._running) { try { NetworkStream ns = this._tcpClient.GetStream(); ns.ReadTimeout = 1000 * 20; if (ns.DataAvailable) { SocketMessager messager = base.Read(ns); Server.Protocol.debugAppendLog?.Invoke(messager.ToString()); if (string.Compare(messager.Action, SocketMessager.SYS_TEST_LINK.Action) != 0) { ServerSocketReceiveEventArgs e = new ServerSocketReceiveEventArgs(this._receives++, messager, this); SyncReceive receive = null; if (this._receiveHandlers.TryGetValue(messager.Id, out receive)) { new Thread(delegate() { try { receive.ReceiveHandler(this, e); } catch (Exception ex) { this.OnError(ex); } finally { receive.Wait.Set(); } }).Start(); } else { new Thread(delegate() { this.OnReceive(e); }).Start(); } } this._lastActive = DateTime.Now; } else if (_accepted) { TimeSpan ts = DateTime.Now - _lastActive; if (ts.TotalSeconds > 5) { this.Write(SocketMessager.SYS_TEST_LINK); } } if (!ns.DataAvailable) { Thread.CurrentThread.Join(100); } } catch (Exception ex) { this._running = false; this.OnError(ex); } } this.Close(); this.OnClosed(); }); this._thread.Start(); }
internal void OnReceive2(ServerSocketReceiveEventArgs e) { this.OnReceive(e); }