Dirk Reiners schrieb:
- Is there a way to unregister functors from RemoteAspects? [...]

There probably isn't right now, as nobody has needed it. You're welcome
to add it and submit a patch, though. ;)

Maybe I'll take a look at the source code, but right now it's not that important ;-)


- I'm now able to replicate a scene graph from a server to several clients via the RemoteAspect. As far as I understood it, the Connection class handles this 1-n connection. I extended the StreamSockConnection to allow accepting new connections in a non-blocking way (I just put the accept() calls in another thread that is handled by the Connection). That seems to work fine, too. However, I would like clients to be able to connect and disconnect anytime. I'm not sure wether the Connection class has any way of detecting disconnected channels, so far I haven't succeeded at this (I've implemented a callback for new connections, after the accept() call returns, maybe I can come up with something likewise when detecting a broken connection).

No idea here. Marcus, can you comment on that?

Well, I've changed my project a little, so I don't need non-blocking connections at the moment anymore. However, the Connection class doesn't seem to take note of disconnected channels, so if you just try to write again, you'll end up with a socket error if one of the connection channels was closed from the other side... I've been thinking of using the Socket class directly for some of my other network stuff (the put* and get* methods are quite convenient, since they handle the little endian / big endian stuff...)


I wouldn't mess with the low-level copyFrom/ToBin. We've been talking
about this kind on initialization for a while, but haven't gotten around
to do it. The problem is that you need to transfer the Creation records,
so that the remote host can create all the needed objects. After that
you can just touch the objects that you want to be transfered
(beginEditCP(ptr); endEditCP(ptr);) and all their data will be
transfered.

Yes, I realized that apparently copyToBin() doesn't do a recursive copy ;-) Right now, I'm using a different approach: I just limit the number of clients to a predefined value. Upon startup, my scene server waits (blocks on accept()) until that number of rendering clients have connected, and then sends the inital sync of the RemoteAspect. That way, all rendering clients have valid copies of the scene all the time. It's not as flexible as being able to connect a rendering client any time to an already running scene server, but it should work for my purposes at the moment.

Oh, by the way: Why does the write() method in the BINSceneFileType class always return false? I've looked at the source code, and it doesn't make use of the BINWriter, though after testing it, I found it to be working... (I don't know how reliable it is, did you leave it out because it's not stable yet?) But then again, I haven't looked at the CVS version, yet ;-)

Anyway, I think I'm beginning to grasp some of the basic concepts of OpenSG ;-)

Thanks,
  Robert



-------------------------------------------------------
The SF.Net email is sponsored by EclipseCon 2004
Premiere Conference on Open Tools Development and Integration
See the breadth of Eclipse activity. February 3-5 in Anaheim, CA.
http://www.eclipsecon.org/osdn
_______________________________________________
Opensg-users mailing list
Opensg-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensg-users

Reply via email to