Coder Social home page Coder Social logo

lawo / ember-plus-sharp Goto Github PK

View Code? Open in Web Editor NEW
20.0 20.0 13.0 14.66 MB

Quickly implement fully type-safe Ember+ consumers in any .NET language

Home Page: http://lawo.github.io/ember-plus-sharp

License: Boost Software License 1.0

CMake 0.01% C# 97.98% Batchfile 0.07% PowerShell 0.27% Visual Basic .NET 1.68%

ember-plus-sharp's People

Contributors

andreashuber-lawo avatar kimonhoffmann avatar rogersan avatar roog avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ember-plus-sharp's Issues

Connecting to DHD devices with an (audio)Matrix deliver exception

Connecting to any DHD device with e.g. an Audio-Matrix throws a ModelException "Inconsistent source or target counts in matrix".
Is this a DHD issue or an issue inside this lib?
The legacy EmberPlusViewer 1.6.2 displays the Matrix without any issue or warning.

matrixerror

Provide a 'global' PropertyChanged event (e.g. at the Consumer)

In order to get notified about a parameter value change, you must today subscribe to the PropertyChanged event of that specific Parameter instance.
This individual event subscription is fine and works perfect.

But in case you are interested in ANY parameter value change (e.g. because your are implementing a general viewer/consumer app), you must subscribe to ALL parameter PropertyChanged events - which might be hundreds or thousand of events to subscribe to (depending on the provider you are connected to).

This seems in some cases quite uncomfortable and cumbersome.

Is there a possibility to provide a single/global PropertyChanged event (e.g. at the Consumer class level) which is being raised, in case ANY parameter is changing. The PropertyChangedEventArgs PropertyName member in this case contain the full path of the related Parameter being changed?!

Many Thanks in advance,
Bernd

Enum parameter value is of type Int64?!

Is this indentend?
Wouldn't an Int32 value be better suited?

E.g., assume you have an IParameter element of type Enum and what to 'print' both its numeric value as well as the Enum key name. You would have to first cast the parameter.Value to a long and then to an int to access the paramater.EnumMap dictionary...
parameter.EnumMap[(int)(long)parameter.Value].Key

To me this looks unnecessarily complicated - or is there a greater reason behind?

Hierarchical online/offline handling

If a node becomes offline then all its children should be considered offline as well. If any element is set online again then all its parents should be considered online.

Moreover, any element that becomes online after being offline, should be subjected to the same details retrieval process as newly retrieved element.

EnumParameter with wrong number in enum

Hi,
when I try to receive Parameter, I get this Error-Message:
"The number of named constants of the enum specified for the parameter with the path [...] does not match the number of entries sent by the provider."
Adding a dummy-entry at the end, does solve that problem.
GlowAnalyzer does not give a hint.
Using v1.2.1604.4003 against a Jünger T*AP Audioprocessor

New to Ember.Net - advice needed

I've gone through the console application tutorial and can parse the tree loaded into TinyEmber+. I'm struggling to get data changes once running - creating a handler for PropertyChanged of a Parameter is not getting called. I can get a data update by using the same method as described in the static approach to reacting to changes. However, my driver will need to receive all parameter changes for a dynamic environment. I am wondering if I am missing a trick to get my consumer updated? I am running the Ember+ Viewer and can see update messages received as I change data in TinyEmber+ - this is what I need in my application :-)

How to use the ChildrenRetrievalPolicy.DirectOnly ?

As far as I understood the ChildrenRetrievalPolicy concept, you might first only use the DirectOnly mode and then request for each INode child again the DirectOnly to retrieve further children etc. inbetween you call _consumer.SendAsync() to get the additional nodes...
This doesn't seem to work... I am using the dynamic mode...

Here is my code:

_consumer = await Consumer<MyRoot>.CreateAsync(_client, 9000, ChildrenRetrievalPolicy.DirectOnly);
_root = _consumer.Root;
// _root at this point contains 1 x 'Sapphire' node - which is correct!
// 'Sapphire' node itself does not contain any children yet.

foreach (var child in _root.Children)
{
    if (child is INode)
        ((INode)child).ChildrenRetrievalPolicy = ChildrenRetrievalPolicy.DirectOnly;
}
await _consumer.SendAsync();
// at this point _root now contains 2 x a 'Sapphire' node ?!
// both having 2 child nodes each...
// if the code is continued and repeated for the child nore; all nodes are duplicated and exist twice!!

Why is this?
Is this a bug? Or am I using the policy incorrectly?

Lawo.EmberPlusSharp.Model.EmberOption is gone

Hi,

in the latest changes, it seems, that the Lawo.EmberPlusSharp.Model.EmberOption has been removed.
So far I used the Lawo.EmberPlusSharp.Model.EmberOption.IgnoreMatrices option.
Is this gone= Am I missing something? or what is the alternative?

Many Greets,
Bernd

High CPU usage

Hi,

I am observing relatively high CPU usage - it appears to be approximately 2% per connection. Is this something that has been observed elsewhere?

I am using v1.2.1604.29003 of the DLL.

Regards,
Steve

Issue with DHD 52/SX

Hi,

I have a customer using a DHD 52/SX.
When using the old legacy Ember+ Viewer 1.6.2 from Lawo (which used https://github.com/Lawo/ember-plus), he can see all nodes and parameters just fine!

Now we are trying to connect to the DHD with THIS library, but this always generates errors. The client actually can connect fine, but the retrieval of the consumer always fails at a certain point... see below.

So it seems, that there is a fundamental different behavior between THIS lib and https://github.com/Lawo/ember-plus.
This is especially annoying, as I now have build a whole set of products around THIS lib,
DHD and the customer now insist, that all is fine on their side, as they have proven via the legacy Ember+ Viewer 1.6.2 from Lawo, that all is fine!
So where is the effective issue within THIS lib?
Why can all nodes be retrieved fine with the Ember Viewer 1.6.2, but not with this lib?

  1. We tried the standard approach to sync the database at once:
    _consumer = await Consumer<MyRoot>.CreateAsync(_client, 20000);
    This however resulted in a TimeoutException:
    "The provider failed to send the children for the element with the path /Device/Channels/Channel 58"
    I have attached a full Glow Payload Message Log, so hopefully you can spot anything:
    DHD 52SX payload.txt

  2. Then we tried the dynamic mode (using ChildrenRetrievalPolicy.DirectOnly):
    So we retrieved the nodes 1 by 1 and traversed down the tree.
    In this mode, we could get all nodes, up until the path: /Device/Channels/Channel 58
    As soon as we tried to retrieve that node, again we got a TimeoutException!
    From then on all was broken and we could not get any further nodes, e.g. /Device/Channels/Channel 59 or /Device/Channels/Channel 60 etc.

Any idea what is causing this issue?
Please note, that this issue is highly critical for me.

Thanks in advance,
Bernd

Tutorial example fails on real Sapphire mixer

I started going through the tutorial here http://lawo.github.io/ember-plus-sharp/html/427fadff-8d32-472e-83d1-3ceaf705ae51.htm and it appears to work when I connect to the TinyEmberPlus dummy but when I try to direct the same code to a real Sapphire mixer, I get the following exception:

System.TimeoutException was unhandled by user code
  HResult=-2146233083
  Message=The provider failed to send the children for the element with the path /Sapphire.
  Source=Lawo.EmberPlusSharp
  StackTrace:
       vid Lawo.EmberPlusSharp.Model.Consumer`1.<RetrieveChildrenAsync>d__34.MoveNext() i C:\Storage\Development\Libraries\ember-plus-sharp-master\Lawo.EmberPlusSharp\Model\Consumer`1.cs:rad 279
    --- Slut på stackspårningen från föregående plats där ett undantag utlöstes ---
       vid System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
       vid System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
       vid System.Runtime.CompilerServices.TaskAwaiter.GetResult()
       vid Lawo.EmberPlusSharp.Model.Consumer`1.<CreateAsync>d__4.MoveNext() i C:\Storage\Development\Libraries\ember-plus-sharp-master\Lawo.EmberPlusSharp\Model\Consumer`1.cs:rad 118
    --- Slut på stackspårningen från föregående plats där ett undantag utlöstes ---
       vid System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
       vid System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
       vid System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
       vid Lawo_EmberPlusSharp_Test.Model.DataService.<connect>d__5.MoveNext() i C:\SVN\metodutv\Lawo-EmberPlusSharp-Test\src\Lawo-EmberPlusSharp-Test\Model\DataService.cs:rad 43
  InnerException: 

The Sapphire is configured to be an Ember+ provider, connecting with the EmberPlusView tool works fine.

What could I be doing wrong?

Review all uses of Task.Delay

Task.Delay is used in a few places where the passed timeout could potentially be infinite. Wherever this is the case, the task should be cancelled properly to avoid orphaned tasks.

SynchronizationContext - Console app/Windows service

I would like to use this library from within a Windows Service and those don't have a SynchronizationContext.

Do you have any recommendations for how I can proceed? I started to read about making a custom SynchronizationContext in this article series but I feel a little bit out of my depth there.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.