public QuestionInfoForm(Client client, QuestionBase question) { InitializeComponent(); this.Question = question; this.client = client; FillQuestionBox(); FillClientAnswersBox(); this.Text = " Вопрос " + question.Name +" Ученика: " + client.Data.Name + " " + this.client.Data.LastName + " " + this.client.Data.Group ; }
public ClientDetailForm(Client client, Test OriginalTest) { if (client == null) { throw new ArgumentNullException(); } if (OriginalTest == null) { throw new ArgumentNullException(); } InitializeComponent(); this.client = client; this.OriginalTest = OriginalTest; this.Text = client.Data.Name + " " + this.client.Data.LastName + " " + this.client.Data.Group; FillInfoBox(); FillQuestionsBox(); }
///// <summary> ///// получить клиентов по запросу ///// </summary> ///// <param name="query">запрос</param> ///// <returns>словарь клиентов</returns> //public Dictionary<string, Client> GetClientsByQuery(IDictionaryQueryAddon<string, Client> query) //{ // try // { // var result = query.MakeQuery(this.Clients); // return result; // } // catch // { // throw new Exception(); // } //} /// <summary> /// добавить клиента /// </summary> /// <param name="key">ид</param> /// <param name="client">клиент</param> /// <param name="exist">делегат - что делать если уже существует клиент с таким же ид</param> /// <param name="notexist">делегат - что делать если не существует клиента с таким же ид</param> public void Add(string key, Client value, Action<Dictionary<string, Client>, Client> exist, Action<Dictionary<string, Client>, Client> notexist) { if (this.Clients.ContainsKey(key) == true) { exist(this.Clients, value); } else { notexist(this.Clients, value); } }
public ClientRecievedEventArgs(Client Client) { this.Client = Client; }
private void Recieve(object o) { TcpClient tcp_client = (TcpClient)o; List<byte[]> buf = new List<byte[]>(); int read = -1; int pos = 0; byte[] END_DATA = Encoding.UTF8.GetBytes("#@END@#"); while (true) { byte[] mas = new byte[MAX_BUFFER_SIZE]; read = tcp_client.GetStream().Read(mas, 0, mas.Length); buf.Add(mas); pos += read; string str1 = Encoding.UTF8.GetString(mas); string str2 = Encoding.UTF8.GetString(END_DATA); if (str1.IndexOf(str2, System.StringComparison.Ordinal) > -1 || read == 0) { int t = 0; t++; break; } } if (read == -1) { tcp_client.Close(); return; } byte[] result = new byte[MAX_BUFFER_SIZE*buf.Count]; int position = 0; for (int i = 0; i < buf.Count; i++) { Array.Copy(buf[i], 0, result, position, MAX_BUFFER_SIZE); position += MAX_BUFFER_SIZE; } try { Client client = new Client(result, ref this.OriginalTest); MakeClientRequest(client, tcp_client); } catch { Exception ex = new Exception("Не правльный запрос"); Client.SendError(tcp_client, ex); } }
private void OnRequestSetResult(Client client, TcpClient tcp_client) { try { string res = AddClient(client); if (Manager.Clients.ContainsKey(client.ID)) { client = Manager.Clients[client.ID]; } if (res.Equals("") == false) { Client.Write(tcp_client,"#"+res); } else { client.Verify(ref this.OriginalTest, client.Buffer); client.Status = Status.AnswersVerified; Client.WriteInfo(client.Data.Result, tcp_client); } } catch (Exception ex) { Client.SendError(tcp_client, ex); } // manager.Clients.Add(client.ID, client); ClientRecievedEventArgs Re = new ClientRecievedEventArgs(client); this.OnClientRecieved(this, Re); }
private void OnRequestGetTest(Client client,TcpClient tcp_client) { try { client.Data.Name = client.CurrentXml.Element("Client").Attribute("Name").Value; client.Data.LastName = client.CurrentXml.Element("Client").Attribute("LastName").Value; client.Data.Group = client.CurrentXml.Element("Client").Attribute("Group").Value; client.Data.TimeStart = DateTime.Now; client.Status = Internet.Status.RecieveTest; } catch { Exception ex = new Exception("неправильный xml"); Client.SendError(tcp_client,ex); } try { Client.Write(tcp_client,SerializedTest); } catch { Exception ex = new Exception("невозможно передать тест"); Client.SendError(tcp_client, ex); } manager.Clients.Add(client.ID, client); ClientRecievedEventArgs Re = new ClientRecievedEventArgs(client); this.OnClientRecieved(this, Re); }
private void MakeClientRequest(Client client, TcpClient tcp_client) { try { string Request = client.CurrentXml.Element("Client").Attribute("Request").Value; switch (Request) { case "GETTEST": { OnRequestGetTest(client, tcp_client); break; } case "SETRESULT": { OnRequestSetResult(client, tcp_client); break; } default: { Exception ex = new Exception("неправильный запрос"); Client.SendError(tcp_client,ex); return; } } } catch { Exception ex = new Exception("Неправильный xml файл"); Client.SendError(tcp_client, ex); } }
private string AddClient(Client client) { if (manager.Clients.ContainsKey(client.ID) == true) { if (manager.Clients[client.ID].Data.Attemts < this.OriginalTest.Settings.Attemts) { manager.Clients[client.ID] = client; manager.Clients[client.ID].Data.Attemts += 1; return ""; } else { return "Превышено количество попыток"; } } else { manager.Clients.Add(client.ID,client); client.Data.Attemts += 1; } return ""; }