コード例 #1
0
        public WikiDocument UploadWikiDocument(Wiki tag,
                                               IEnumerable <WikiPage> wikiPages,

                                               int miningLimit,
                                               TimeSpan miningTime,
                                               DigitalSignature digitalSignature)
        {
            lock (this.ThisLock)
            {
                var uploadItem = new UploadItem();
                uploadItem.Type             = "WikiDocument";
                uploadItem.WikiDocument     = new WikiDocument(tag, DateTime.UtcNow, wikiPages, digitalSignature);
                uploadItem.MiningLimit      = miningLimit;
                uploadItem.MiningTime       = miningTime;
                uploadItem.DigitalSignature = digitalSignature;

                _settings.UploadItems.RemoveAll((target) =>
                {
                    return(target.Type == uploadItem.Type &&
                           target.WikiDocument.Tag == uploadItem.WikiDocument.Tag &&
                           target.DigitalSignature == digitalSignature);
                });

                _settings.UploadItems.Add(uploadItem);

                return(uploadItem.WikiDocument);
            }
        }
コード例 #2
0
ファイル: OutoposManager.cs プロジェクト: tonycody/Library
        public IEnumerable <WikiDocumentMetadata> GetWikiDocumentMetadatas(Wiki tag)
        {
            if (_disposed)
            {
                throw new ObjectDisposedException(this.GetType().FullName);
            }

            lock (this.ThisLock)
            {
                return(_connectionsManager.GetWikiDocumentMetadatas(tag));
            }
        }
コード例 #3
0
ファイル: WikiDocument.cs プロジェクト: tonycody/Library
        internal WikiDocument(Wiki tag, DateTime creationTime, IEnumerable <WikiPage> wikiPages, DigitalSignature digitalSignature)
        {
            this.Tag          = tag;
            this.CreationTime = creationTime;

            if (wikiPages != null)
            {
                this.ProtectedWikiPages.AddRange(wikiPages);
            }

            this.CreateCertificate(digitalSignature);
        }
コード例 #4
0
ファイル: WikiDocument.cs プロジェクト: tonycody/Library
        protected override void ProtectedImport(Stream stream, BufferManager bufferManager, int count)
        {
            for (; ;)
            {
                byte id;
                {
                    byte[] idBuffer = new byte[1];
                    if (stream.Read(idBuffer, 0, idBuffer.Length) != idBuffer.Length)
                    {
                        return;
                    }
                    id = idBuffer[0];
                }

                int length;
                {
                    byte[] lengthBuffer = new byte[4];
                    if (stream.Read(lengthBuffer, 0, lengthBuffer.Length) != lengthBuffer.Length)
                    {
                        return;
                    }
                    length = NetworkConverter.ToInt32(lengthBuffer);
                }

                using (RangeStream rangeStream = new RangeStream(stream, stream.Position, length, true))
                {
                    if (id == (byte)SerializeId.Tag)
                    {
                        this.Tag = Wiki.Import(rangeStream, bufferManager);
                    }
                    else if (id == (byte)SerializeId.CreationTime)
                    {
                        this.CreationTime = DateTime.ParseExact(ItemUtilities.GetString(rangeStream), "yyyy-MM-ddTHH:mm:ssZ", System.Globalization.DateTimeFormatInfo.InvariantInfo).ToUniversalTime();
                    }

                    else if (id == (byte)SerializeId.WikiPage)
                    {
                        this.ProtectedWikiPages.Add(WikiPage.Import(rangeStream, bufferManager));
                    }

                    else if (id == (byte)SerializeId.Certificate)
                    {
                        this.Certificate = Certificate.Import(rangeStream, bufferManager);
                    }
                }
            }
        }
コード例 #5
0
ファイル: OutoposManager.cs プロジェクト: tonycody/Library
        public WikiDocument UploadWikiDocument(Wiki tag,
                                               IEnumerable <WikiPage> wikiPages,

                                               int miningLimit,
                                               TimeSpan miningTime,
                                               DigitalSignature digitalSignature)
        {
            if (_disposed)
            {
                throw new ObjectDisposedException(this.GetType().FullName);
            }

            lock (this.ThisLock)
            {
                return(_uploadManager.UploadWikiDocument(tag, wikiPages, miningLimit, miningTime, digitalSignature));
            }
        }
コード例 #6
0
ファイル: OutoposConverter.cs プロジェクト: tonycody/Library
        public static string ToWikiString(Wiki item)
        {
            if (item == null)
            {
                throw new ArgumentNullException("Wiki");
            }

            try
            {
                using (Stream stream = OutoposConverter.ToStream <Wiki>(item))
                {
                    return("Wiki:" + OutoposConverter.ToBase64String(stream));
                }
            }
            catch (Exception)
            {
                throw new FormatException();
            }
        }