public void ProcessAtServer() { IServerMessageDispatcher dispatcher = (IServerMessageDispatcher)MessageDispatcher (); int count = ReadInt(); Transaction ta = Transaction(); for (int i = 0; i < count; i++) { StatefulBuffer writer = _payLoad.ReadStatefulBuffer(); int messageId = writer.ReadInt(); Msg message = Msg.GetMessage(messageId); Msg clonedMessage = message.PublicClone(); clonedMessage.SetMessageDispatcher(MessageDispatcher()); clonedMessage.SetTransaction(ta); if (clonedMessage is MsgD) { MsgD msgd = (MsgD)clonedMessage; msgd.PayLoad(writer); if (msgd.PayLoad() != null) { msgd.PayLoad().IncrementOffset(Const4.IntLength); Transaction t = CheckParentTransaction(ta, msgd.PayLoad()); msgd.SetTransaction(t); dispatcher.ProcessMessage(msgd); } } else { dispatcher.ProcessMessage(clonedMessage); } } }
/// <param name="socket"></param> internal virtual Db4objects.Db4o.CS.Internal.Messages.Msg ReadPayLoad(IMessageDispatcher messageDispatcher, Db4objects.Db4o.Internal.Transaction a_trans, Socket4Adapter socket, ByteArrayBuffer reader) { Db4objects.Db4o.CS.Internal.Messages.Msg msg = PublicClone(); msg.SetMessageDispatcher(messageDispatcher); msg.SetTransaction(CheckParentTransaction(a_trans, reader)); return(msg); }