[eq-dev] Problem when mapping Distributed Objects
Daniel.Wilcox at aec.at
Thu Mar 12 17:17:18 CET 2009
Dan Wilcox wrote:
> I'm using distributed objects to pass the ids, versions of other
> distributed objects, as well as the overall state variables, and this is
> working fine.
> I have one type of object that contains a pointer and number bytes to an
> area of memory that should be synchronized between nodes. Obviously this
> pointer is useless if sent to another machine, so on startup the app sets
> the data and location in the object. I implemented the applyInstanceData
> and getInstanceData functions and the data is serialized using the pointer
> and size.
> This was working fine using the depreciated setInstanceData func, but I've
> moved to Equalizer 0.6 and am trying to remove the use of that function.
> Now the objects do not update in the clients and I've narrowed it down to
> the client mapping. When map is called, the object's internal data is
> changed and the pointer is lost (goes to null), so the deserialization
> fails. I tried calling map with eq::net::Object::VERSION_NONE, but still
> the same problem. I put a check in applyInstanceData to not deserialize if
> the object is not mapped (aka VERSION_NONE) and this does not overwrite
> the pointer, but the app crashes unexpectedly ...
> There must be something simple I'm missing, because the other objects I
> use that contain regular variables (non pointers) work fine.
> Thanks in advace for any info.
Ok, sorry I solved it just now ...
in applyInstanceData() ...
memcpy(&_pData, is.getRemainingBuffer(), _ui64DataSize);
memcpy(_pData, is.getRemainingBuffer(), _ui64DataSize);
I was writing into the pointer address and not where it was pointing ...
View this message in context: http://n2.nabble.com/Problem-when-mapping-Distributed-Objects-tp2468140p2468347.html
Sent from the Equalizer - Parallel Rendering mailing list archive at Nabble.com.
More information about the eq-dev