Ajouts du mode stream + ajouts QoL.
This commit is contained in:
@@ -5,6 +5,7 @@ using Microsoft.AspNetCore.Components;
|
||||
using Microsoft.JSInterop;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using Newtonsoft.Json;
|
||||
using System.ComponentModel;
|
||||
|
||||
namespace BlazorCanvas.Server.Components.Data;
|
||||
|
||||
@@ -15,13 +16,21 @@ public class CanvasService {
|
||||
private IJSRuntime _jsRuntime;
|
||||
private IRedisService _redisService;
|
||||
private CanvasCommand _lastCommand = new();
|
||||
private bool _is_started = false;
|
||||
private List<CanvasCommand> _lsComms = new();
|
||||
private bool _is_init = false,
|
||||
_is_started = false,
|
||||
_has_ended = false;
|
||||
|
||||
public CanvasService(IJSRuntime jsRuntime, IRedisService redisService) {
|
||||
_jsRuntime = jsRuntime;
|
||||
_redisService = redisService;
|
||||
}
|
||||
|
||||
~CanvasService() {
|
||||
_has_ended = true;
|
||||
Task.Delay(100);
|
||||
}
|
||||
|
||||
public string currentColor { get; set; } = "Black";
|
||||
public int pointSize { get; set; } = 1;
|
||||
public bool snap { get; set; }
|
||||
@@ -40,6 +49,26 @@ public class CanvasService {
|
||||
}
|
||||
}
|
||||
|
||||
public async void Consume() {
|
||||
while (!_has_ended) {
|
||||
if (_lsComms.Count > 0)
|
||||
_lsComms.Clear();
|
||||
_lsComms.AddRange(await _redisService.Consume());
|
||||
if (_lsComms.Count == 1)
|
||||
Draw(_lsComms[0]);
|
||||
else if (_lsComms.Count > 0)
|
||||
Draw(_lsComms);
|
||||
}
|
||||
}
|
||||
|
||||
public async void Init() {
|
||||
while (!_is_init) {
|
||||
_is_init = await _redisService.InitStreamer();
|
||||
if (!_is_init)
|
||||
await Task.Delay(1000);
|
||||
}
|
||||
}
|
||||
|
||||
public async void Draw(IEnumerable<CanvasCommand> lsCommand) {
|
||||
if (_currentCanvasContext is null) {
|
||||
_currentCanvasContext = await myCanvas.CreateCanvas2DAsync();
|
||||
@@ -70,8 +99,11 @@ public class CanvasService {
|
||||
public async void HandleMouse(MouseEventArgs eventArgs) {
|
||||
double mouseX = 0, mouseY = 0;
|
||||
|
||||
if (!_is_started) {
|
||||
Subscribe();
|
||||
if (!_is_started) {
|
||||
if (!_is_init)
|
||||
Init();
|
||||
if (_is_init)
|
||||
Consume();
|
||||
_is_started = true;
|
||||
}
|
||||
|
||||
@@ -105,10 +137,12 @@ public class CanvasService {
|
||||
|
||||
if (command.Equals(_lastCommand))
|
||||
return; // Pour pas spammer des commandes si c'est pas pertinent.
|
||||
|
||||
_redisService.Publish(command);
|
||||
|
||||
//Draw(command); // Local
|
||||
_redisService.Produce(command); // Stream
|
||||
|
||||
// _redisService.Publish(command); // Pub/Sub
|
||||
|
||||
// Draw(command); // Local
|
||||
|
||||
_lastCommand = command;
|
||||
}
|
||||
|
Reference in New Issue
Block a user