Esempio n. 1
0
        public override IGossipMessageSet RehydrateGossipMessage(IByteArray data, GossipHeader header, IBlockchainEventsRehydrationFactory rehydrationFactory)
        {
            if (header.chainId != NeuraliumBlockchainTypes.NeuraliumInstance.Neuralium)
            {
                throw new ApplicationException("Chain must be a neuralium chain");
            }

            return(base.RehydrateGossipMessage(data, header, rehydrationFactory));
        }
Esempio n. 2
0
        public override ITargettedMessageSet <IBlockchainEventsRehydrationFactory> RehydrateMessage(IByteArray data, TargettedHeader header, IBlockchainEventsRehydrationFactory rehydrationFactory)
        {
            IDataRehydrator dr = DataSerializationFactory.CreateRehydrator(data);

            IByteArray messageBytes = NetworkMessageSet.ExtractMessageBytes(dr);

            NetworkMessageSet.ResetAfterHeader(dr);
            IDataRehydrator messageRehydrator = DataSerializationFactory.CreateRehydrator(messageBytes);

            short workflowType = messageRehydrator.ReadShort();

            if (workflowType == 0)
            {
                throw new ApplicationException("Invalid workflow type");
            }

            switch (workflowType)
            {
            case NeuraliumWorkflowIDs.TEST:

                return(new TestFactory((BlockchainServiceSet)this.serviceSet).RehydrateMessage(data, header, rehydrationFactory));

                // default:
                //     throw new ApplicationException("Workflow message factory not found");
            }

            return(base.RehydrateMessage(data, header, rehydrationFactory));
        }