Explanation of Stream Update Types

There are 5 different types of updates in speckle:

  1. Global
  2. Name
  3. Meta
  4. Object
  5. Children

And SpeckleUnity only supports the global update type right now. How do these various types of updates get triggered from other clients? It seems like all my updates in rhino seem to be received as global updates anyway so what’s really going on here?

I’m happy to make a pull request of an additional docs page on this for the website once I can wrap my head around it but I need some guidance first.

Welcome to the rather shoddily structured updates from speckle. Grab a beer (coffee!), sit down, and enjoy the show:

Global updates happen whenever the full state of the stream changes. That’s a safe one to handle.

Meta updates happen when the stream name changes, or any other metadata around the stream (not its contents!)

Object updates happen only when the stream contents changed (ie, its objects).

Children updates happen only when a stream creates a new child “version” of itself.

Now, when it comes to implementation, not all clients emit these, or implement their handling when received.

Rhino specific: somehow even selecting a layer in the layers menu triggers a layer change event, which messed things up. So Rhino just sends global updates. Caching layers on both sides of the client relieve pressure.

Children updates are only emitted, AFAIK (the older i get the less RAM i have for code i’ve written myself…), by the grasshopper clients, and consumed, again, only by them.

Safe to say, best way, at the moment, is to bet your money on Global updates. Clients that properly implement caching are not really affected.

Also, goes without saying, it’s something we’re cleaning up in the next version. These updates will be controlled by the server, rather than the clients.

1 Like