Ejemplo n.º 1
0
        public async Task Uninstall(string destinationKey, SqlConnection conn, SqlTransaction trans)
        {
            var leftTable  = new OutboxTable(OutboxTable.Left(sourceKey, destinationKey));
            var rightTable = new OutboxTable(OutboxTable.Right(sourceKey, destinationKey));

            var sequence       = new OutboxSequence(sourceKey, destinationKey);
            var linkStateTable = new LinkStateTable(sourceKey);

            await linkStateTable.Drop(conn, trans).ConfigureAwait(false);

            await leftTable.Drop(conn, trans).ConfigureAwait(false);

            await rightTable.Drop(conn, trans).ConfigureAwait(false);

            await sequence.Drop(conn, trans).ConfigureAwait(false);
        }
Ejemplo n.º 2
0
        async Task <LinkState> InitializeLinkState(LinkState lockedLinkState, SqlConnection conn, SqlTransaction initTransaction)
        {
            if (!lockedLinkState.Initialized)
            {
                var initializedState = lockedLinkState.Initialize(
                    OutboxTable.Left(sourceKey, destinationKey),
                    OutboxTable.Right(sourceKey, destinationKey), epochSize);

                await initializedState.HeadSession.CreateConstraint(conn, initTransaction);

                await initializedState.TailSession.CreateConstraint(conn, initTransaction);

                await linkStateTable.Update(destinationKey, initializedState, conn, initTransaction).ConfigureAwait(false);

                return(initializedState);
            }

            return(lockedLinkState);
        }