예제 #1
0
        public override Msg ReplyFromServer()
        {
            IServerMessageDispatcher dispatcher = ServerMessageDispatcher();

            lock (ContainerLock())
            {
                LocalTransaction trans = ServerTransaction();
                long             replicationRecordId  = ReadLong();
                long             timestamp            = ReadLong();
                IList            concurrentTimestamps = trans.ConcurrentReplicationTimestamps();
                ServerMessageDispatcher().Server().BroadcastReplicationCommit(timestamp, concurrentTimestamps
                                                                              );
                ReplicationRecord replicationRecord = (ReplicationRecord)Container().GetByID(trans
                                                                                             , replicationRecordId);
                Container().Activate(trans, replicationRecord, new FixedActivationDepth(int.MaxValue
                                                                                        ));
                replicationRecord.SetVersion(timestamp);
                replicationRecord.ConcurrentTimestamps(concurrentTimestamps);
                replicationRecord.Store(trans);
                Container().StoreAfterReplication(trans, replicationRecord, Container().UpdateDepthProvider
                                                      ().ForDepth(int.MaxValue), false);
                trans.Commit(dispatcher);
                committedInfo = dispatcher.CommittedInfo();
                Transaction().UseDefaultTransactionTimestamp();
            }
            return(Msg.Ok);
        }
예제 #2
0
        public virtual Msg ReplyFromServer()
        {
            IServerMessageDispatcher dispatcher = ServerMessageDispatcher();

            lock (ContainerLock())
            {
                ServerTransaction().Commit(dispatcher);
                committedInfo = dispatcher.CommittedInfo();
            }
            return(Msg.Ok);
        }