//IOptions will be read at application start only and wiil be registered as a singleton //IOptionsSnapshot will be read everytime a new instance is injected and registered as scoped public Worker(ILogger <Worker> logger, IOptions <JsonGroup> jsonOptions, IOptions <EnvGroup> envOptions, IOptions <CmdGroup> cmdOptions) { this.logger = logger; jsonSettings = jsonOptions.Value; envSettings = envOptions.Value; cmdSettings = cmdOptions.Value; }
public HttpCode Execute() { Clear(); // Connect NetworkChannel channel = null; try { channel = new NetworkChannel(Connection); // Request JsonEntity jsonEntity = (JsonEntity)Entity; JsonClient jsonClient = (JsonClient)Client; JsonGroup jsonGroup = (JsonGroup)Group; JsonJoinRequestMessage jsonRequestMessage = new JsonJoinRequestMessage() { Entity = jsonEntity, Client = jsonClient, Group = jsonGroup }; JsonPacket jsonRequest = new JsonPacket(jsonRequestMessage); HttpRequest httpRequest = new HttpRequest(Session.Id) { Data = Session.Encrypt(jsonRequest) }; channel.Send(httpRequest); // Response HttpResponse httpResponse; channel.Receive(out httpResponse); Code = httpResponse.Code; if (httpResponse.Ok) { JsonPacket jsonResponse = JsonPacket.Parse(Session.Decrypt(httpResponse.Data)); JsonJoinResponseMessage jsonResponseMessage = JsonJoinResponseMessage.Parse(jsonResponse.Message); // Data Server.Entities = jsonResponseMessage.Entities; Server.Sessions = jsonResponseMessage.Sessions; Server.Clients = jsonResponseMessage.Clients; Server.Groups = jsonResponseMessage.Groups; #if DEBUG Log.Add(httpRequest, httpResponse, jsonRequest, jsonResponse); #endif } } finally { if (channel != null) { channel.Shutdown(); } } return(Code); }
public Worker(ILogger <Worker> logger, IOptionsMonitor <JsonGroup> jsonOptions, IOptions <EnvGroup> envOptions, IOptions <CmdGroup> cmdOptions) { this.logger = logger; jsonSettings = jsonOptions.CurrentValue; jsonOptions.OnChange(newValue => jsonSettings = newValue); envSettings = envOptions.Value; cmdSettings = cmdOptions.Value; }
public async Task <string> GetGroupsAsync() { List <Group> groups = await db.Groups .Include(p => p.Students) .AsNoTracking() .ToListAsync(); List <JsonGroup> jsonGroups = new List <JsonGroup>(); foreach (Group group in groups) { JsonGroup jsonGroup = new JsonGroup() { Id = group.Id, Name = group.Name, Students = new List <JsonStudent>(group.Students.Count) }; foreach (Student student in group.Students) { JsonStudent jsonStudent = new JsonStudent() { Id = student.Id, FirstName = student.FirstName, LastName = student.LastName, GroupId = student.GroupId, CreatedAt = student.CreatedAt, UpdatedAt = student.UpdatedAt }; jsonGroup.Students.Add(jsonStudent); } jsonGroups.Add(jsonGroup); } string json = JsonSerializer.Serialize <List <JsonGroup> >(jsonGroups); return(await Task.FromResult(JsonPrettyPrint(json))); }
public void Execute(HttpRequest httpRequest, JsonPacket jsonRequest, SessionComponent session) { // Connect NetworkChannel channel = new NetworkChannel(Connection); // Request JsonJoinRequestMessage jsonRequestMessage = JsonJoinRequestMessage.Parse(jsonRequest.Message); // Data JsonEntity jsonEntity = jsonRequestMessage.Entity; Entity entity = EntityMap.Get(jsonEntity.Id); if (entity != null) { entity.Shutdown(); } entity = session.Owner; entity.Id = jsonEntity.Id; EntityMap.Add(entity.Id, entity); Server.Entities = EntityMap.Count; JsonGroup jsonGroup = jsonRequestMessage.Group; if (jsonGroup == null) { jsonGroup = JsonGroup.Default; } JsonClient jsonClient = jsonRequestMessage.Client; ClientComponent client = new ClientComponent(jsonClient.Id, jsonClient.Name); entity.Add(client); ClientMap.Add(client.Id, entity); Server.Clients = ClientMap.Count; GroupComponent group = new GroupComponent(jsonGroup.Id); entity.Add(group); GroupList.Add(group.Id, entity); Server.Groups = GroupList.Count; SearchListComponent download = new SearchListComponent(); entity.Add(download); // Response JsonJoinResponseMessage jsonResponseMessage = new JsonJoinResponseMessage() { Entities = Server.Entities, Sessions = Server.Sessions, Clients = Server.Clients, Groups = Server.Groups }; JsonPacket jsonResponse = new JsonPacket(jsonResponseMessage); HttpResponse httpResponse = new HttpResponse() { Data = session.Encrypt(jsonResponse) }; channel.Send(httpResponse); #if DEBUG Log.Add(httpRequest, httpResponse, jsonRequest, jsonResponse); #endif }
public Group PopulateGroup(Group group, JsonGroup jsonGroup) { group.Name = jsonGroup.Name; return(group); }