using System; using System.Threading.Tasks; using System.Collections.Generic; using Aurora.Proto; using Aurora.Models; using Aurora.Services; namespace Aurora.RemoteImpl { public class RemotePartyServiceImpl : RemotePartyService.RemotePartyServiceBase { /// /// Dictionary of party members. Key -> ClientId /// private Dictionary _partyMembers; public RemotePartyServiceImpl() { _partyMembers = new Dictionary(); //Add self to members list _partyMembers.Add(SettingsService.Instance.Username, new PartyMember { Username = SettingsService.Instance.Username, Id = "asdf", IpAddress = ServerService.Instance.Hostname, Port = ServerService.Instance.Port.ToString() }); } public Dictionary PartyMembers { get { return _partyMembers; } } public override Task JoinParty(JoinPartyRequest request, Grpc.Core.ServerCallContext context) { _partyMembers.Add(request.ClientId, new PartyMember() { Username = request.UserName, Id = request.ClientId, IpAddress = request.IpAddress, Port = request.Port, }); JoinPartyResponse response = new JoinPartyResponse() { Status = PartyJoinedStatusEnum.Connected }; return Task.FromResult(response); } public override Task LeaveParty(LeavePartyRequest request, Grpc.Core.ServerCallContext context) { _partyMembers.Remove(request.ClientId); LeavePartyResponse response = new LeavePartyResponse() { Status = PartyJoinedStatusEnum.Disconnected }; return Task.FromResult(response); } } }