internal ReplicationStreamWriter(ReplicationSystem system, ReplicationStreamWriterOptions options = null)
        {
            this.system  = system;
            this.options = options ?? ReplicationStreamWriterOptions.Default;

            if (this.options.AllowAddOrRemove)
            {
                this.system.ReplicaAdded   += System_ReplicaAdded;
                this.system.ReplicaRemoved += System_ReplicaRemoved;
                foreach (var replica in this.system.Replicas)
                {
                    System_ReplicaAdded(replica);
                }
            }

            if (this.options.AllowRemoteCall)
            {
                this.system.RemoteCall += System_RemoteCall;
                foreach (var call in this.system.QueuedRemoteCalls)
                {
                    System_RemoteCall(call.Item1, call.Item2);
                }
            }

            if (this.options.AllowUpdatedOnly)
            {
                this.system.ReplicaUpdated += System_ReplicaUpdated;
            }
        }
示例#2
0
 public IReplicationStreamWriter CreateStreamWriter(ReplicationStreamWriterOptions options = null)
 {
     return(new ReplicationStreamWriter(this, options));
 }