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

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