public PendingChallenge GetPendingChallengeByUser(int playerId) { DbConnection connection = new DbConnection(); PendingChallenge pendingChallenge; SqlConnection conn = connection.GetDbConnection(); conn.Open(); using (SqlCommand command = new SqlCommand("PendingChallengeByUser", conn) { CommandType = System.Data.CommandType.StoredProcedure }) { SqlDataReader dataReader; command.Parameters.Add("@PlayerId", SqlDbType.Int).Value = playerId; dataReader = command.ExecuteReader(); if (dataReader.HasRows) { dataReader.Read(); pendingChallenge = new PendingChallenge { ChallengeId = (int)dataReader.GetValue(0), ChallengingPlayerId = (int)dataReader.GetValue(1), OpponentPlayerId = (int)dataReader.GetValue(2) }; } else { pendingChallenge = new PendingChallenge(); } dataReader.Close(); } conn.Close(); conn.Dispose(); return(pendingChallenge); }
public byte[] Register(UserEntry entry) { Console.WriteLine("Got register request from: " + entry.NodeId); if (IsInPending(entry)) { Console.WriteLine("Denying access. User with same name/address is pending."); return null; // user with same id is already registered, deny } int challenge = _rand.Next(); byte[] rawChallenge = Encoding.Default.GetBytes(challenge.ToString()); PendingChallenge pc = new PendingChallenge(rawChallenge, DateTime.Now); waitingChallenge.Add(entry, pc); return rawChallenge; }