File: WorkflowRuntimeService.cs

package info (click to toggle)
mono 6.14.1%2Bds2-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,282,732 kB
  • sloc: cs: 11,182,461; xml: 2,850,281; ansic: 699,123; cpp: 122,919; perl: 58,604; javascript: 30,841; asm: 21,845; makefile: 19,602; sh: 10,973; python: 4,772; pascal: 925; sql: 859; sed: 16; php: 1
file content (102 lines) | stat: -rw-r--r-- 3,537 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
// <copyright file="WorkflowRuntimeService.cs" company="Microsoft">Copyright (c) Microsoft Corporation.  All rights reserved.</copyright>

using System;
using System.Globalization;

using System.Workflow.Runtime;

namespace System.Workflow.Runtime.Hosting
{
    [Obsolete("The System.Workflow.* types are deprecated.  Instead, please use the new types from System.Activities.*")]
    public enum WorkflowRuntimeServiceState
    {
        Stopped,
        Starting,
        Started,
        Stopping
    }

    [Obsolete("The System.Workflow.* types are deprecated.  Instead, please use the new types from System.Activities.*")]
    abstract public class WorkflowRuntimeService
    {
        private WorkflowRuntime _runtime;
        private WorkflowRuntimeServiceState state = WorkflowRuntimeServiceState.Stopped;

        protected WorkflowRuntime Runtime
        {
            get
            {
                return _runtime;
            }

        }

        internal void SetRuntime(WorkflowRuntime runtime)
        {
            if (runtime == null && _runtime != null)
            {
                _runtime.Started -= this.HandleStarted;
                _runtime.Stopped -= this.HandleStopped;
            }
            _runtime = runtime;
            if (runtime != null)
            {
                _runtime.Started += this.HandleStarted;
                _runtime.Stopped += this.HandleStopped;
            }
        }

        protected void RaiseServicesExceptionNotHandledEvent(Exception exception, Guid instanceId)
        {
            Runtime.RaiseServicesExceptionNotHandledEvent(exception, instanceId);
        }

        internal void RaiseExceptionNotHandledEvent(Exception exception, Guid instanceId)
        {
            Runtime.RaiseServicesExceptionNotHandledEvent(exception, instanceId);
        }

        protected WorkflowRuntimeServiceState State
        {
            get { return state; }
        }

        virtual internal protected void Start()
        {
            if (_runtime == null)
                throw new InvalidOperationException(String.Format(CultureInfo.CurrentCulture, ExecutionStringManager.ServiceNotAddedToRuntime, this.GetType().Name));
            if (state.Equals(WorkflowRuntimeServiceState.Started))
                throw new InvalidOperationException(String.Format(CultureInfo.CurrentCulture, ExecutionStringManager.ServiceAlreadyStarted, this.GetType().Name));

            state = WorkflowRuntimeServiceState.Starting;
        }

        virtual internal protected void Stop()
        {
            if (_runtime == null)
                throw new InvalidOperationException(String.Format(CultureInfo.CurrentCulture, ExecutionStringManager.ServiceNotAddedToRuntime, this.GetType().Name));
            if (state.Equals(WorkflowRuntimeServiceState.Stopped))
                throw new InvalidOperationException(String.Format(CultureInfo.CurrentCulture, ExecutionStringManager.ServiceNotStarted, this.GetType().Name));

            state = WorkflowRuntimeServiceState.Stopping;
        }

        virtual protected void OnStarted()
        { }

        virtual protected void OnStopped()
        { }

        private void HandleStarted(object source, WorkflowRuntimeEventArgs e)
        {
            state = WorkflowRuntimeServiceState.Started;
            this.OnStarted();
        }

        private void HandleStopped(object source, WorkflowRuntimeEventArgs e)
        {
            state = WorkflowRuntimeServiceState.Stopped;
            this.OnStopped();
        }
    }
}