diff options
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Region/ScriptEngine/Common/Executor.cs | 230 |
1 files changed, 115 insertions, 115 deletions
diff --git a/OpenSim/Region/ScriptEngine/Common/Executor.cs b/OpenSim/Region/ScriptEngine/Common/Executor.cs index d165722..1849085 100644 --- a/OpenSim/Region/ScriptEngine/Common/Executor.cs +++ b/OpenSim/Region/ScriptEngine/Common/Executor.cs | |||
@@ -1,115 +1,115 @@ | |||
1 | using System; | 1 | using System; |
2 | using System.Collections.Generic; | 2 | using System.Collections.Generic; |
3 | using System.Text; | 3 | using System.Text; |
4 | using System.Reflection; | 4 | using System.Reflection; |
5 | using System.Runtime.Remoting.Lifetime; | 5 | using System.Runtime.Remoting.Lifetime; |
6 | 6 | ||
7 | namespace OpenSim.Region.ScriptEngine.Common | 7 | namespace OpenSim.Region.ScriptEngine.Common |
8 | { | 8 | { |
9 | public class Executor : MarshalByRefObject | 9 | public class Executor : MarshalByRefObject |
10 | { | 10 | { |
11 | // Private instance for each script | 11 | // Private instance for each script |
12 | 12 | ||
13 | private IScript m_Script; | 13 | private IScript m_Script; |
14 | private Dictionary<string, MethodInfo> Events = new Dictionary<string, MethodInfo>(); | 14 | private Dictionary<string, MethodInfo> Events = new Dictionary<string, MethodInfo>(); |
15 | private bool m_Running = true; | 15 | private bool m_Running = true; |
16 | //private List<IScript> Scripts = new List<IScript>(); | 16 | //private List<IScript> Scripts = new List<IScript>(); |
17 | 17 | ||
18 | public Executor(IScript Script) | 18 | public Executor(IScript Script) |
19 | { | 19 | { |
20 | m_Script = Script; | 20 | m_Script = Script; |
21 | } | 21 | } |
22 | 22 | ||
23 | // Object never expires | 23 | // Object never expires |
24 | public override Object InitializeLifetimeService() | 24 | public override Object InitializeLifetimeService() |
25 | { | 25 | { |
26 | //Console.WriteLine("Executor: InitializeLifetimeService()"); | 26 | //Console.WriteLine("Executor: InitializeLifetimeService()"); |
27 | // return null; | 27 | // return null; |
28 | ILease lease = (ILease)base.InitializeLifetimeService(); | 28 | ILease lease = (ILease)base.InitializeLifetimeService(); |
29 | 29 | ||
30 | if (lease.CurrentState == LeaseState.Initial) | 30 | if (lease.CurrentState == LeaseState.Initial) |
31 | { | 31 | { |
32 | lease.InitialLeaseTime = TimeSpan.Zero; // TimeSpan.FromMinutes(1); | 32 | lease.InitialLeaseTime = TimeSpan.Zero; // TimeSpan.FromMinutes(1); |
33 | // lease.SponsorshipTimeout = TimeSpan.FromMinutes(2); | 33 | // lease.SponsorshipTimeout = TimeSpan.FromMinutes(2); |
34 | // lease.RenewOnCallTime = TimeSpan.FromSeconds(2); | 34 | // lease.RenewOnCallTime = TimeSpan.FromSeconds(2); |
35 | } | 35 | } |
36 | return lease; | 36 | return lease; |
37 | } | 37 | } |
38 | 38 | ||
39 | public AppDomain GetAppDomain() | 39 | public AppDomain GetAppDomain() |
40 | { | 40 | { |
41 | return AppDomain.CurrentDomain; | 41 | return AppDomain.CurrentDomain; |
42 | } | 42 | } |
43 | 43 | ||
44 | public void ExecuteEvent(string FunctionName, object[] args) | 44 | public void ExecuteEvent(string FunctionName, object[] args) |
45 | { | 45 | { |
46 | // IMPORTANT: Types and MemberInfo-derived objects require a LOT of memory. | 46 | // IMPORTANT: Types and MemberInfo-derived objects require a LOT of memory. |
47 | // Instead use RuntimeTypeHandle, RuntimeFieldHandle and RunTimeHandle (IntPtr) instead! | 47 | // Instead use RuntimeTypeHandle, RuntimeFieldHandle and RunTimeHandle (IntPtr) instead! |
48 | //try | 48 | //try |
49 | //{ | 49 | //{ |
50 | if (m_Running == false) | 50 | if (m_Running == false) |
51 | { | 51 | { |
52 | // Script is inactive, do not execute! | 52 | // Script is inactive, do not execute! |
53 | return; | 53 | return; |
54 | } | 54 | } |
55 | 55 | ||
56 | string EventName = m_Script.State() + "_event_" + FunctionName; | 56 | string EventName = m_Script.State() + "_event_" + FunctionName; |
57 | 57 | ||
58 | //type.InvokeMember(EventName, BindingFlags.InvokeMethod, null, m_Script, args); | 58 | //type.InvokeMember(EventName, BindingFlags.InvokeMethod, null, m_Script, args); |
59 | 59 | ||
60 | //Console.WriteLine("ScriptEngine Executor.ExecuteEvent: \"" + EventName + "\""); | 60 | //Console.WriteLine("ScriptEngine Executor.ExecuteEvent: \"" + EventName + "\""); |
61 | 61 | ||
62 | if (Events.ContainsKey(EventName) == false) | 62 | if (Events.ContainsKey(EventName) == false) |
63 | { | 63 | { |
64 | // Not found, create | 64 | // Not found, create |
65 | Type type = m_Script.GetType(); | 65 | Type type = m_Script.GetType(); |
66 | try | 66 | try |
67 | { | 67 | { |
68 | MethodInfo mi = type.GetMethod(EventName); | 68 | MethodInfo mi = type.GetMethod(EventName); |
69 | Events.Add(EventName, mi); | 69 | Events.Add(EventName, mi); |
70 | } | 70 | } |
71 | catch | 71 | catch |
72 | { | 72 | { |
73 | // Event name not found, cache it as not found | 73 | // Event name not found, cache it as not found |
74 | Events.Add(EventName, null); | 74 | Events.Add(EventName, null); |
75 | } | 75 | } |
76 | } | 76 | } |
77 | 77 | ||
78 | // Get event | 78 | // Get event |
79 | MethodInfo ev = null; | 79 | MethodInfo ev = null; |
80 | Events.TryGetValue(EventName, out ev); | 80 | Events.TryGetValue(EventName, out ev); |
81 | 81 | ||
82 | if (ev == null) // No event by that name! | 82 | if (ev == null) // No event by that name! |
83 | { | 83 | { |
84 | //Console.WriteLine("ScriptEngine Can not find any event named: \"" + EventName + "\""); | 84 | //Console.WriteLine("ScriptEngine Can not find any event named: \"" + EventName + "\""); |
85 | return; | 85 | return; |
86 | } | 86 | } |
87 | 87 | ||
88 | // Found | 88 | // Found |
89 | //try | 89 | //try |
90 | //{ | 90 | //{ |
91 | // Invoke it | 91 | // Invoke it |
92 | ev.Invoke(m_Script, args); | 92 | ev.Invoke(m_Script, args); |
93 | 93 | ||
94 | //} | 94 | //} |
95 | //catch (Exception e) | 95 | //catch (Exception e) |
96 | //{ | 96 | //{ |
97 | // // TODO: Send to correct place | 97 | // // TODO: Send to correct place |
98 | // Console.WriteLine("ScriptEngine Exception attempting to executing script function: " + e.ToString()); | 98 | // Console.WriteLine("ScriptEngine Exception attempting to executing script function: " + e.ToString()); |
99 | //} | 99 | //} |
100 | 100 | ||
101 | 101 | ||
102 | //} | 102 | //} |
103 | //catch { } | 103 | //catch { } |
104 | } | 104 | } |
105 | 105 | ||
106 | 106 | ||
107 | public void StopScript() | 107 | public void StopScript() |
108 | { | 108 | { |
109 | m_Running = false; | 109 | m_Running = false; |
110 | } | 110 | } |
111 | 111 | ||
112 | 112 | ||
113 | } | 113 | } |
114 | 114 | ||
115 | } | 115 | } |