Переделывание демки без сериализатора пока
This commit is contained in:
@@ -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};
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -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);
|
||||
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user