private void Matching() { foreach (var job in _IsEmriList.Where(w => w.isFinished == false)) { foreach (var makina in _MakinaList.Where(w => w.Durum == MakinaStatus.EMPTY)) { if (job.Tip == makina.Tip) { if (makina.Isler == null) { makina.Isler = new List <IsEmri>(); } makina.Isler.Add(job); makina.Durum = MakinaStatus.BUSY; } } } foreach (var makina in _MakinaList.Where(w => w.Durum == MakinaStatus.BUSY)) { int makinaHız = makina.UretimHizi; int makinaAzalan = makina.UretimHizi; int jobToplam = 0; foreach (var job in makina.Isler) { jobToplam += job.Miktar; makinaAzalan -= job.Miktar; if (makinaAzalan > job.Miktar) { job.isFinished = true; } } if (makinaHız > jobToplam) { makina.Durum = MakinaStatus.EMPTY; } } foreach (var sockets in _MakinaSockets) { foreach (var makina in _MakinaList) { if (makina.MakinaId == sockets.Makina.MakinaId) { string data = JsonConvert.SerializeObject(makina); SendData(sockets.Socket, data); } } } ServerResponsePlanlamaClients model = new ServerResponsePlanlamaClients(); model.IsEmriList = _IsEmriList; model.MakinaList = _MakinaList; string response = JsonConvert.SerializeObject(model); foreach (var item in _PlanClients) { SendData(item, response); } }
private void PlanReceiveCallback(IAsyncResult ar) { Socket socket = (Socket)ar.AsyncState; if (socket.Connected) { int received = 0; try { received = socket.EndReceive(ar); } catch (Exception) { for (int i = 0; i < _PlanClients.Count; i++) { if (_PlanClients[i].RemoteEndPoint.ToString().Equals(socket.RemoteEndPoint.ToString())) { _PlanClients.RemoveAt(i); } } } if (received != 0) { byte[] dataBuf = new byte[received]; Array.Copy(_buffer, dataBuf, received); string text = Encoding.ASCII.GetString(dataBuf); var emir = JsonConvert.DeserializeObject <IsEmri>(text); emir.Id = IsEmriId; IsEmriId++; _IsEmriList.Add(emir); ServerResponsePlanlamaClients model = new ServerResponsePlanlamaClients(); model.IsEmriList = _IsEmriList; model.MakinaList = _MakinaList; string response = JsonConvert.SerializeObject(model); foreach (var item in _PlanClients) { SendData(item, response); } Matching(); } else { for (int i = 0; i < _PlanClients.Count; i++) { if (_PlanClients[i].RemoteEndPoint.ToString().Equals(socket.RemoteEndPoint.ToString())) { _PlanClients.RemoveAt(i); } } } } socket.BeginReceive(_buffer, 0, _buffer.Length, SocketFlags.None, new AsyncCallback(PlanReceiveCallback), socket); }
private void PlanAcceptCallback(IAsyncResult ar) { Socket socket = _planSocket.EndAccept(ar); _PlanClients.Add(socket); ServerResponsePlanlamaClients model = new ServerResponsePlanlamaClients(); model.IsEmriList = _IsEmriList; model.MakinaList = _MakinaList; string response = JsonConvert.SerializeObject(model); foreach (var item in _PlanClients) { SendData(item, response); } socket.BeginReceive(_buffer, 0, _buffer.Length, SocketFlags.None, new AsyncCallback(PlanReceiveCallback), socket); _planSocket.BeginAccept(new AsyncCallback(PlanAcceptCallback), null); }