コード例 #1
0
ファイル: Hashgraph.cs プロジェクト: erinloy/babble-cs
        public async Task <Exception> InsertEvent(Event ev, bool setWireInfo)
        {
            //verify signature

            var(ok, err) = ev.Verify();

            if (!ok)
            {
                return(err ?? new HashgraphError($"Invalid Event signature"));
            }

            using (var tx = Store.BeginTx())

            {
                err = CheckSelfParent(ev);
                if (err != null)
                {
                    return(new Exception($"CheckSelfParent: {err.Message}", err));
                }

                err = await CheckOtherParent(ev);

                if (err != null)
                {
                    return(new Exception($"CheckOtherParent: {err.Message}", err));
                }

                ev.SetTopologicalIndex(TopologicalIndex);
                TopologicalIndex++;

                if (setWireInfo)
                {
                    err = await SetWireInfo(ev);

                    if (err != null)
                    {
                        return(new Exception($"SetWireInfo: {err.Message}", err));
                    }
                }

                err = await InitEventCoordinates(ev);

                if (err != null)
                {
                    return(new Exception($"InitEventCoordinates: {err.Message}", err));
                }

                err = await Store.SetEvent(ev);

                if (err != null)
                {
                    return(new Exception($"SetEvent: {err.Message}", err));
                }

                err = await UpdateAncestorFirstDescendant(ev);

                if (err != null)
                {
                    return(new Exception($"UpdateAncestorFirstDescendant: {err.Message}", err));
                }

                UndeterminedEvents.Add(ev.Hex());

                if (ev.IsLoaded())
                {
                    PendingLoadedEvents++;
                }

                if (ev.BlockSignatures() != null)
                {
                    await RecordBlockSignatures(ev.BlockSignatures());
                }

                tx.Commit();
            }

            return(null);
        }
コード例 #2
0
ファイル: Hashgraph.cs プロジェクト: jeremylcarter/dotnatter
        public Exception InsertEvent(Event ev, bool setWireInfo)
        {
            //verify signature
            var(ok, err) = ev.Verify();

            if (!ok)
            {
                if (err != null)
                {
                    return(err);
                }

                return(new HashgraphError($"Invalid signature"));
            }

            err = CheckSelfParent(ev);
            if (err != null)
            {
                return(new Exception($"CheckSelfParent: {err.Message}", err));
            }

            err = CheckOtherParent(ev);
            if (err != null)
            {
                return(new Exception($"CheckOtherParent: {err.Message}", err));
            }


            ev.SetTopologicalIndex(TopologicalIndex);
            TopologicalIndex++;

            if (setWireInfo)
            {
                err = SetWireInfo(ev);
                if (err != null)
                {
                    return(new Exception($"SetWireInfo: {err.Message}", err));
                }
            }

            err = InitEventCoordinates(ev);
            if (err != null)
            {
                return(new Exception($"InitEventCoordinates: {err.Message}", err));
            }


            err = Store.SetEvent(ev);
            if (err != null)
            {
                return(new Exception($"SetEvent: {err.Message}", err));
            }


            err = UpdateAncestorFirstDescendant(ev);
            if (err != null)
            {
                return(new Exception($"UpdateAncestorFirstDescendant: {err.Message}", err));
            }


            UndeterminedEvents.Add(ev.Hex());

            if (ev.IsLoaded())
            {
                PendingLoadedEvents++;
            }

            return(null);
        }