6 Replies Latest reply on Nov 23, 2005 9:33 AM by Scott Stark

    Externalization evolution of a non-version serialiation form

    Adrian Brock Master

      So AcknowledgeRequestMsg is externalized with no version.

      Which means I can't just add a boolean flag to the message without potentially
      corrupting the stream.
      The boolean is to say whether the message requires a reply.

      Unless somebody knows a way to do this (or can think of something clever :-),
      I'm going to have to send replies to NACKs all the time (to support old clients)
      even though new clients just ignore it:

      ServerSocketManagerHandler

       case m_acknowledge:
       AcknowledgementRequestMsg ackmsg = (AcknowledgementRequestMsg) msg;
       AcknowledgementRequest ack = ackmsg.getAck();
       server.acknowledge(connectionToken, ack);
       // We send the reply although on newer clients it is ignored.
       socketMgr.sendReply(msg);
       break;
      


      UILClientILService:
       case m_acknowledge:
       // We have to ignore NACK replies because of backwards compatibility
       break;
      


      I would have preferred to do something like:
       if (msg.isOneWay() == false)
       socketMgr.sendReply(msg);
      


      With newer clients setting "OneWay" to true on the original send of the message.