1
0

It's time to let your babies grow up to be cowboys. 🎶

This commit is contained in:
MarcEricMartel
2023-11-18 15:03:51 -05:00
parent c5929e8cb1
commit 41f5bc5d67
5 changed files with 139 additions and 10 deletions

View File

@@ -18,6 +18,7 @@ public class CanvasService {
private IRedisService _redisService;
private CanvasCommand _lastCommand = new();
private List<CanvasCommand> _lsComms = new();
private Guid _id = Guid.NewGuid();
private bool _is_init = false,
_is_started = false,
_has_ended = false;
@@ -54,11 +55,12 @@ public class CanvasService {
while (!_has_ended) {
if (_lsComms.Count > 0)
_lsComms.Clear();
_lsComms.AddRange(await _redisService.Consume());
_lsComms.AddRange(await _redisService.Consume(_id.ToString()));
if (_lsComms.Count == 1)
Draw(_lsComms[0]);
else if (_lsComms.Count > 0)
Draw(_lsComms);
Task.Delay(10);
}
}

View File

@@ -8,5 +8,5 @@ public interface IRedisService {
void Publish(CanvasCommand command);
void Produce(CanvasCommand command);
Task<IEnumerable<CanvasCommand>> Consume();
Task<IEnumerable<CanvasCommand>> Consume(string id);
}

View File

@@ -56,20 +56,22 @@ public class RedisService : IRedisService {
public async void Produce(CanvasCommand command) {
arNve[0] = new NameValueEntry("command", JsonConvert.SerializeObject(command));
await _database.StreamAddAsync(STREAM_NAME, arNve);
_database.StreamAddAsync(STREAM_NAME, arNve);
}
public async Task<IEnumerable<CanvasCommand>> Consume() {
public async Task<IEnumerable<CanvasCommand>> Consume(string id) {
List<CanvasCommand> lsComm = new();
CanvasCommand? comm;
var result = await _database.StreamReadGroupAsync(STREAM_NAME, GROUP_NAME, "commCon", ">");
var result = await _database.StreamReadGroupAsync(STREAM_NAME, GROUP_NAME, id, ">", 100);
string json = "";
foreach (var c in result) {
await _database.StreamAcknowledgeAsync(STREAM_NAME, GROUP_NAME, c.Id);
_database.StreamAcknowledgeAsync(STREAM_NAME, GROUP_NAME, c.Id);
try {
string json = c.Values.FirstOrDefault(x => x.Name == "command").Value.ToString();
json = c.Values.FirstOrDefault(x => x.Name == "command").Value.ToString();
comm = JsonConvert.DeserializeObject<CanvasCommand>(json);
} catch { continue; }
} catch {
Console.WriteLine($"OH NO {json}");
continue; }
if (comm is not null)
lsComm.Add(comm);
}