示例#1
0
        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");
        }
示例#3
0
 internal static void OnClientUpdated(Version e)
 {
     ClientUpdated?.Invoke(null, e);
 }
 private static void ClientStatusUpdatedEvent(long id, StateUpdateData statusData)
 => ClientUpdated?.Invoke(id, statusData);