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