|
Evaluation
|
---- START ---- xxxxx@xxxxx 2002-08-27 ----
This bug is related to RMIServerProxy not checking the parameters of an operation to see if any of them are images, in the renderable mode. In the rendered mode, RMIServerProxy checks the parameter block for the presence of any images, and if any are present, it either replaces them with serializable wrappers or with pointers to the corresponding remote object on the server. (RMIServerProxy: Line 211)
However in the Renderable mode, the RMIServerProxy constructor does not examine the parameter block for the presence of any images, and thus these cannot be dealt with correctly (RMIServerProxy: Lines 516 through 522). I believe this is what is causing the program to hang, though more investigation is required to pinpoint the exact line of code where the program is hanging and understand this behavior. Note that one of the reasons the RMIServerProxy constructor does not replace the images in the operation's parameter block is that this causes problems with the "renderable" operator, which is one of the most common operations used in renderable mode. The problem is that replacing the image (downSampler RenderedOp in the case of the "renderable" operator) would cause the RenderedOp to be rendered on the client and then serialized, which is not what should happen. The RenderedOp should be instantiated on the server instead. One solution that was brought up was to check whether the RenderedOp in the ParameterBlock has sufficient sources, if it does, serialize it, if not, instantiate it on the other side (Note that the downSampler RenderedOp does not have its sources set, this is done only when a rendering is requested). This solution could solve this problem and should be implemented after further investigation.
However the second problem is that there doesn't seem to be any obvious mechanism to replace RemoteRenderableOps that are created on the client, if these are parameters in the ParameterBlock. This is due to the fact that a RemoteRenderableOp does not keep any pointer to the RenderableOp that is created corresponding to it on the server. This issue needs to be further examined.
---- END ---- xxxxx@xxxxx 2002-08-27 ----
|