예제 #1
0
        public async Task <ProcessBlockResult> ProcessBlockAsync(string block)
        {
            var action  = new ProcessBlock(block);
            var handler = new ActionHandler <ProcessBlock, ProcessBlockResult>(_node);

            return(await handler.Handle(action));
        }
예제 #2
0
 public Flow(string name, Flow parentFlow, ProcessBlock processBlock)
     : this()
 {
     this.Id                 = SunStone.Util.SequentialGuid.NewGuid();
     Name                    = name;
     this.Parent             = parentFlow;
     this.Start              = DateTime.Now;
     this.ProcessInstanceId  = parentFlow.ProcessInstanceId;
     this.ParentReactivation = true;
     createAttributeInstances(processBlock.Attributes);
 }
예제 #3
0
 private bool IsMateriaEnough(ProcessBlock block)
 {
     for (int i = 0; i < block.matBuffer.Count; i++)
     {
         var mat    = block.quest.materials[i].count;
         var buffer = block.matBuffer[i];
         if (buffer < mat)
         {
             return(false);
         }
     }
     return(true);
 }
예제 #4
0
        public void HolidayTest()
        {
            XmlDocument xmlDocument = new XmlDocument();

            xmlDocument.Load("Definitions\\Holiday.xml");

            using (var unitWork = UnitOfWork.Start())
            {
                ProcessDefinitionCreationContext creationContext = new ProcessDefinitionCreationContext();
                ProcessDefinition processDefinition = creationContext.CreateProcessDefinition(xmlDocument);
                creationContext.ResolveReferences();

                Assert.AreEqual(1, processDefinition.ChildBlocks.Count);
                ProcessBlock concurrentProcessBlock = processDefinition.ChildBlocks.First();

                Node          fork = null, join = null;
                ActivityState hrNotify = null, approvalNotify = null;
                foreach (Node node in concurrentProcessBlock.Nodes)
                {
                    if (node.Name == "approved holiday fork")
                    {
                        fork = node;
                    }
                    else if (node.Name == "join before finish")
                    {
                        join = node;
                    }
                    else if (node.Name == "HR notification")
                    {
                        hrNotify = node as ActivityState;
                    }
                    else if (node.Name == "approval notification")
                    {
                        approvalNotify = node as ActivityState;
                    }
                }

                Assert.IsNotNull(fork);
                Assert.IsNotNull(join);
                Assert.IsNotNull(hrNotify);
                Assert.IsNotNull(approvalNotify);
                Assert.IsNotNull(fork.LeavingTransitions.First().To);

                var processBlockRepository = new EFRepository <ProcessBlock>();
                processBlockRepository.Add(processDefinition);
                unitWork.Flush();
            }
        }
예제 #5
0
        public void AddQuest(Quest quest)
        {
            if (m_Blocks.Count >= GameConst.COUNT_CLAIM_QUEST)
            {
                return;
            }
            var block = new ProcessBlock
            {
                index     = m_Blocks.Count,
                quest     = quest,
                matBuffer = new List <int>(),
                isRun     = false,
                startSeq  = 0,
            };

            for (int i = 0; i < quest.materials.Count; i++)
            {
                block.matBuffer.Add(0);
            }
            m_Blocks.Add(block);
        }
예제 #6
0
파일: Form1.cs 프로젝트: 0rps/model_git
        public Model(int _t1, int _t2, double _mean, double _var, bool _isReturnRequests)
        {
            Model.Time = 0;
            _var = Math.Sqrt(_var);
            AbsTimeGenerator uniformGen = new UniformTimeGenerator(_t1, _t2);
            AbsTimeGenerator normGen = new NormalTimeGenerator(_mean, _var);
            m_ignoredRequests = new StatBlock();
            m_successRequests = new StatBlock();
            m_queue = new StandartQueue(m_ignoredRequests);
            m_generator = new Generator(uniformGen, m_queue);
            m_procBlock = new ProcessBlock(normGen, m_queue, m_successRequests);
            (m_queue as StandartQueue).SetSleepBlock(m_procBlock);

            if (_isReturnRequests)
            {
                m_successRequests.SetNextBlock(m_queue);
            }

            m_list = new List<IWorkBlock>();
            m_list.Add(m_generator);
            m_list.Add(m_procBlock);
        }
예제 #7
0
        // Constructor.
        internal CryptoAPITransform(int algorithm, byte[] iv, byte[] key,
                                    int blockSize, int feedbackBlockSize,
                                    CipherMode mode, PaddingMode padding,
                                    bool encrypt)
        {
            // Initialize the common state.
            if (iv != null)
            {
                this.iv = (byte[])(iv.Clone());
            }
            else
            {
                this.iv = null;
            }
            this.blockSize         = blockSize / 8;
            this.feedbackBlockSize = feedbackBlockSize / 8;
            this.padding           = padding;
            this.mode = mode;

            // Determine which processing methods to use based on the
            // mode and the encrypt/decrypt flag.
            switch (mode)
            {
            case CipherMode.CBC:
            {
                // Cipher Block Chaining Mode.
                if (encrypt)
                {
                    state        = CryptoMethods.EncryptCreate(algorithm, key);
                    processBlock = new ProcessBlock
                                       (CBCEncrypt.TransformBlock);
                    processFinal = new ProcessFinal
                                       (CBCEncrypt.TransformFinalBlock);
                }
                else
                {
                    CBCDecrypt.Initialize(this);
                    state        = CryptoMethods.DecryptCreate(algorithm, key);
                    processBlock = new ProcessBlock
                                       (CBCDecrypt.TransformBlock);
                    processFinal = new ProcessFinal
                                       (CBCDecrypt.TransformFinalBlock);
                }
            }
            break;

            case CipherMode.ECB:
            {
                // Electronic Code Book Mode.
                if (encrypt)
                {
                    state        = CryptoMethods.EncryptCreate(algorithm, key);
                    processBlock = new ProcessBlock
                                       (ECBEncrypt.TransformBlock);
                    processFinal = new ProcessFinal
                                       (ECBEncrypt.TransformFinalBlock);
                }
                else
                {
                    ECBDecrypt.Initialize(this);
                    state        = CryptoMethods.DecryptCreate(algorithm, key);
                    processBlock = new ProcessBlock
                                       (ECBDecrypt.TransformBlock);
                    processFinal = new ProcessFinal
                                       (ECBDecrypt.TransformFinalBlock);
                }
            }
            break;

            case CipherMode.OFB:
            {
                // Output Feed Back Mode.
                OFBEncrypt.Initialize(this);
                state        = CryptoMethods.EncryptCreate(algorithm, key);
                processBlock = new ProcessBlock
                                   (OFBEncrypt.TransformBlock);
                processFinal = new ProcessFinal
                                   (OFBEncrypt.TransformFinalBlock);
            }
            break;

            case CipherMode.CFB:
            {
                // Cipher Feed Back Mode.
                if (encrypt)
                {
                    CFBEncrypt.Initialize(this);
                    state        = CryptoMethods.EncryptCreate(algorithm, key);
                    processBlock = new ProcessBlock
                                       (CFBEncrypt.TransformBlock);
                    processFinal = new ProcessFinal
                                       (CFBEncrypt.TransformFinalBlock);
                }
                else
                {
                    CFBDecrypt.Initialize(this);
                    state        = CryptoMethods.EncryptCreate(algorithm, key);
                    processBlock = new ProcessBlock
                                       (CFBDecrypt.TransformBlock);
                    processFinal = new ProcessFinal
                                       (CFBDecrypt.TransformFinalBlock);
                }
            }
            break;

            case CipherMode.CTS:
            {
                // Cipher Text Stealing Mode.
                if (encrypt)
                {
                    CTSEncrypt.Initialize(this);
                    state        = CryptoMethods.EncryptCreate(algorithm, key);
                    processBlock = new ProcessBlock
                                       (CTSEncrypt.TransformBlock);
                    processFinal = new ProcessFinal
                                       (CTSEncrypt.TransformFinalBlock);
                }
                else
                {
                    // We need an encryptor as well to handle
                    // streams with only a single block in them.
                    CTSDecrypt.Initialize(this);
                    state  = CryptoMethods.DecryptCreate(algorithm, key);
                    state2 = CryptoMethods.EncryptCreate
                                 (algorithm, key);
                    processBlock = new ProcessBlock
                                       (CTSDecrypt.TransformBlock);
                    processFinal = new ProcessFinal
                                       (CTSDecrypt.TransformFinalBlock);
                }
            }
            break;
            }
        }
	// Constructor.
	internal CryptoAPITransform(int algorithm, byte[] iv, byte[] key,
								int blockSize, int feedbackBlockSize,
								CipherMode mode, PaddingMode padding,
								bool encrypt)
			{
				// Initialize the common state.
				if(iv != null)
				{
					this.iv = (byte[])(iv.Clone());
				}
				else
				{
					this.iv = null;
				}
				this.blockSize = blockSize / 8;
				this.feedbackBlockSize = feedbackBlockSize / 8;
				this.padding = padding;
				this.mode = mode;

				// Determine which processing methods to use based on the
				// mode and the encrypt/decrypt flag.
				switch(mode)
				{
					case CipherMode.CBC:
					{
						// Cipher Block Chaining Mode.
						if(encrypt)
						{
							state = CryptoMethods.EncryptCreate(algorithm, key);
							processBlock = new ProcessBlock
								(CBCEncrypt.TransformBlock);
							processFinal = new ProcessFinal
								(CBCEncrypt.TransformFinalBlock);
						}
						else
						{
							CBCDecrypt.Initialize(this);
							state = CryptoMethods.DecryptCreate(algorithm, key);
							processBlock = new ProcessBlock
								(CBCDecrypt.TransformBlock);
							processFinal = new ProcessFinal
								(CBCDecrypt.TransformFinalBlock);
						}
					}
					break;

					case CipherMode.ECB:
					{
						// Electronic Code Book Mode.
						if(encrypt)
						{
							state = CryptoMethods.EncryptCreate(algorithm, key);
							processBlock = new ProcessBlock
								(ECBEncrypt.TransformBlock);
							processFinal = new ProcessFinal
								(ECBEncrypt.TransformFinalBlock);
						}
						else
						{
							ECBDecrypt.Initialize(this);
							state = CryptoMethods.DecryptCreate(algorithm, key);
							processBlock = new ProcessBlock
								(ECBDecrypt.TransformBlock);
							processFinal = new ProcessFinal
								(ECBDecrypt.TransformFinalBlock);
						}
					}
					break;

					case CipherMode.OFB:
					{
						// Output Feed Back Mode.
						OFBEncrypt.Initialize(this);
						state = CryptoMethods.EncryptCreate(algorithm, key);
						processBlock = new ProcessBlock
							(OFBEncrypt.TransformBlock);
						processFinal = new ProcessFinal
							(OFBEncrypt.TransformFinalBlock);
					}
					break;

					case CipherMode.CFB:
					{
						// Cipher Feed Back Mode.
						if(encrypt)
						{
							CFBEncrypt.Initialize(this);
							state = CryptoMethods.EncryptCreate(algorithm, key);
							processBlock = new ProcessBlock
								(CFBEncrypt.TransformBlock);
							processFinal = new ProcessFinal
								(CFBEncrypt.TransformFinalBlock);
						}
						else
						{
							CFBDecrypt.Initialize(this);
							state = CryptoMethods.EncryptCreate(algorithm, key);
							processBlock = new ProcessBlock
								(CFBDecrypt.TransformBlock);
							processFinal = new ProcessFinal
								(CFBDecrypt.TransformFinalBlock);
						}
					}
					break;

					case CipherMode.CTS:
					{
						// Cipher Text Stealing Mode.
						if(encrypt)
						{
							CTSEncrypt.Initialize(this);
							state = CryptoMethods.EncryptCreate(algorithm, key);
							processBlock = new ProcessBlock
								(CTSEncrypt.TransformBlock);
							processFinal = new ProcessFinal
								(CTSEncrypt.TransformFinalBlock);
						}
						else
						{
							// We need an encryptor as well to handle
							// streams with only a single block in them.
							CTSDecrypt.Initialize(this);
							state = CryptoMethods.DecryptCreate(algorithm, key);
							state2 = CryptoMethods.EncryptCreate
								(algorithm, key);
							processBlock = new ProcessBlock
								(CTSDecrypt.TransformBlock);
							processFinal = new ProcessFinal
								(CTSDecrypt.TransformFinalBlock);
						}
					}
					break;
				}
			}