예제 #1
0
        public bool GetContactRequestList(out string message)
        {
            try
            {
                // Prepare the packet to send
                Packets.BasicReqPacket packet = new Packets.BasicReqPacket(
                    Packets.PacketTypes.ListContactReq,
                    alea,
                    profile.Username
                    );

                // send the package
                udp.SendMessage(packet.Pack());

                // Recieve packet
                byte[] data = udp.RecieveMessage();

                // Unpack the data and check the type
                Packets.Packet p = Packets.Packet.Unpack <Packets.Packet>(data);
                switch ((Packets.PacketTypes)p.Type)
                {
                case Packets.PacketTypes.ContactAck:
                    // Update contact requests list
                    Packets.ContactReqListPacket contactsRequests =
                        Packets.Packet.Unpack <Packets.ContactReqListPacket>(data);

                    profile.RecievedContactRequests = contactsRequests.Recieved;
                    profile.SentContactRequests     = contactsRequests.Sent;

                    message = "Recieved list correctly";
                    return(true);

                case Packets.PacketTypes.Error:
                    message = "Error: " + Packets.Packet.Unpack <Packets.AckErrorPacket>(data).Message;
                    DebugInfo("Contact request list: " + message);
                    break;

                default:
                    DebugInfo("Contact request list: Unexpected type.");
                    message = "Error, unexpected type.";
                    break;
                }
                return(false);
            }
            catch (System.Net.Sockets.SocketException)
            {
                DebugInfo("Server is offline.");
                message = "Server is offline.";
                return(false);
            }
        }
예제 #2
0
        // Get contact requests list for user current
        public static bool ContactRequestsList(Packets.BasicReqPacket packet,
                                               ClientStatus current,
                                               ref List <Models.ContactRequest> sent,
                                               ref List <Models.ContactRequest> recieved,
                                               out string message)
        {
            try
            {
                if (CheckBasics(current, ClientStatus.Status.Disconnected, packet.Alea, out message))
                {
                    var db = new Models.ServerDatabase();

                    // Fill the lists with the requests
                    recieved = db.ContactRequests
                               .Where(r => r.To.Username == current.Client.Username)
                               .ToList();

                    sent = db.ContactRequests
                           .Where(r => r.From.Username == current.Client.Username)
                           .ToList();

                    message = "Cool!";
                    return(true);
                }
                else
                {
                    message = "Contact Requests List Error: " + message;
                    return(false);
                }
            }
            catch (SqlException)
            {
                message = "Contact Requests List Error: Database error.";
                return(false);
            }
        }