Переделывание демки без сериализатора пока

This commit is contained in:
2025-03-01 16:53:00 +03:00
parent 8f891ff59e
commit b5b766342e
7 changed files with 22 additions and 20 deletions
+1 -1
View File
@@ -14,7 +14,7 @@ namespace Example.Backend
return Name;
}
public async Task<SharedObject<IPage>> Print(string text, CancellationToken cancellationToken = default)
public async Task<IPage> Print(string text, CancellationToken cancellationToken = default)
{
// throw new Exception("The method or operation is not implemented.");
return new Page {Text = text};
+7 -7
View File
@@ -12,27 +12,27 @@ namespace Example.Backend
{
private List<IPrinter> _printers = new List<IPrinter>();
public SharedObject<IPrinter> Create(string printerName)
public IPrinter Create(string printerName)
{
Console.WriteLine("Creating printer");
return new Printer { Name = printerName };
}
public void Register(SharedObject<IPrinter> printer)
public void Register(IPrinter printer)
{
_printers.Add(printer.Value);
_printers.Add(printer);
Console.WriteLine("Registered printer");
}
public SharedObject<IPrinter> GetPrinterByName(string printerName)
public IPrinter GetPrinterByName(string printerName)
{
Console.WriteLine("Getting printer");
return new SharedObject<IPrinter>(_printers.Find(i => i.GetName() == printerName)!);
return (_printers.Find(i => i.GetName() == printerName)!);
}
public SharedObject<IPrinter> GetFirstPrinter()
public IPrinter GetFirstPrinter()
{
return new SharedObject<IPrinter>(_printers.First());
return _printers.First();
}
public string[] CollectAllNames()
+1 -1
View File
@@ -14,7 +14,7 @@ namespace Example.Frontend
return "ClientBasedPrinter from mroa";
}
public async Task<SharedObject<IPage>> Print(string text, CancellationToken cancellationToken)
public async Task<IPage> Print(string text, CancellationToken cancellationToken)
{
Console.WriteLine($"Printed: {text}");
await Task.Yield();
+5 -6
View File
@@ -46,8 +46,7 @@ class Program
var factory = context.GetSingleObject(typeof(IPrinterFactory)) as IPrinterFactory;
//правильный порядок команд 8-5-10-7
var printer = factory.Create("Test");
using (var disposingPrinter = printer.Value)
using (var disposingPrinter = factory.Create("Test"))
{
Console.WriteLine("Printer created");
Thread.Sleep(100);
@@ -57,7 +56,7 @@ class Program
Thread.Sleep(100);
factory.Register(new SharedObject<IPrinter>(new ClientBasedPrinter()));
factory.Register(new ClientBasedPrinter());
Console.WriteLine("Registered printer");
Thread.Sleep(100);
@@ -66,7 +65,7 @@ class Program
Console.WriteLine("First printer");
Thread.Sleep(100);
Console.WriteLine(registred.Value);
Console.WriteLine(registred);
Console.WriteLine("Collecting all printers");
var names = factory.CollectAllNames();
Thread.Sleep(100);
@@ -75,8 +74,8 @@ class Program
var page = disposingPrinter.Print("Test Page", new CancellationToken()).GetAwaiter().GetResult();
Console.WriteLine("Page printed");
Console.WriteLine(page.Value.ToString());
var data = page.Value.GetData();
Console.WriteLine(page.ToString());
var data = page.GetData();
Console.WriteLine("Data : {0}", Encoding.UTF8.GetString(data));
Console.WriteLine("Dispose printer");
+1 -1
View File
@@ -10,7 +10,7 @@ namespace Example.Shared
public interface IPrinter : IDisposable
{
string GetName();
Task<SharedObject<IPage>> Print(string text, CancellationToken cancellationToken);
Task<IPage> Print(string text, CancellationToken cancellationToken);
}
}
+4 -4
View File
@@ -6,10 +6,10 @@ namespace Example.Shared
[SharedObjectInterface]
public interface IPrinterFactory
{
SharedObject<IPrinter> Create(string printerName);
void Register(SharedObject<IPrinter> printer);
SharedObject<IPrinter> GetPrinterByName(string printerName);
SharedObject<IPrinter> GetFirstPrinter();
IPrinter Create(string printerName);
void Register(IPrinter printer);
IPrinter GetPrinterByName(string printerName);
IPrinter GetFirstPrinter();
string[] CollectAllNames();
}
+3
View File
@@ -160,6 +160,9 @@ namespace mROA.Cbor
private void WriteObject(object obj, CborWriter writer, IEndPointContext? context)
{
var type = obj.GetType();
var properties = FilterProperties(type.GetProperties());
var values = properties.Select(property => property.GetValue(obj)).ToList();
WriteList(values, writer, context);