private void AcceptCallback(IAsyncResult ar) { Socket s = _serverSocket.EndAccept(ar); var client = new Client(s); try { //Add to Client list client.ConnectionDateTime = DateTime.UtcNow; client.LastPacketReceived = DateTime.UtcNow; client.Guid = Guid.NewGuid(); Console.WriteLine(@"Client connected : {0}", client.Guid); lock (LstClients) LstClients.Add(client.Guid, client); ClientConnected.Invoke(client, ClientEventType.Connected); _serverSocket.BeginAccept(AcceptCallback, _serverSocket); client.Socket.BeginReceive(client.Buffer, 0, sizeof(int), SocketFlags.None, ReceiveCallback, client); //Initiatilze connection //Get information :) Sender sender = new Sender(this, client); sender.RequestCountry(); while (LstClients[client.Guid].Country == null) { Thread.Sleep(1); } if (LstClients[client.Guid] != null) { ClientUpdated.Invoke(LstClients[client.Guid], ClientEventType.UpdatedCountry); } } catch (Exception) { if (client.Socket != null) { client.Socket.Close(); lock (LstClients) LstClients.Remove(client.Guid); ClientDisconnected.Invoke(client, ClientEventType.Disconnected); } } }
async void OnSave(object sender, EventArgs e) { ClientViewModel client = new ClientViewModel { FirstName = FirstName.Text, LastName = LastName.Text, Address = Address.Text, City = City.Text, Zip = Zip.Text, County = County.Text, PhoneNumber = PhoneNumber.Text }; BindingContext = new ClientViewModel { Id = client.Id, FirstName = client.FirstName, LastName = client.LastName, Address = client.Address, City = client.City, Zip = client.Zip, County = client.County, PhoneNumber = client.PhoneNumber }; if (client.Id == 0) { await _connection.InsertAsync(client); ClientAdded?.Invoke(this, client); } else { await _connection.UpdateAsync(client); ClientUpdated?.Invoke(this, client); } await Navigation.PopAsync(); //OnPropertyChanged("client"); }
internal static void OnClientUpdated(Version e) { ClientUpdated?.Invoke(null, e); }
private static void ClientStatusUpdatedEvent(long id, StateUpdateData statusData) => ClientUpdated?.Invoke(id, statusData);