diff options
author | lbsa71 | 2007-07-04 16:28:59 +0000 |
---|---|---|
committer | lbsa71 | 2007-07-04 16:28:59 +0000 |
commit | 5c32b33a66fbdf371d53d85ee54ee8e837481570 (patch) | |
tree | 68121d2b62aa34e2f8e627823314460a19fe06f8 | |
parent | * Removed AssetHttpServer, using BaseHttpServer instead (diff) | |
download | opensim-SC_OLD-5c32b33a66fbdf371d53d85ee54ee8e837481570.zip opensim-SC_OLD-5c32b33a66fbdf371d53d85ee54ee8e837481570.tar.gz opensim-SC_OLD-5c32b33a66fbdf371d53d85ee54ee8e837481570.tar.bz2 opensim-SC_OLD-5c32b33a66fbdf371d53d85ee54ee8e837481570.tar.xz |
* re-fixed the utf-16 bug in xmlRpcResponse serialization
* added LLSDStreamHandler.cs to Caps (Haven't enabled it yet, though)
* removed last traces of old rest handling
Diffstat (limited to '')
-rw-r--r-- | OpenGridServices.sln | 125 | ||||
-rw-r--r-- | OpenSim.sln | 309 | ||||
-rw-r--r-- | OpenSim/Framework/Servers/BaseHttpServer.cs | 175 | ||||
-rw-r--r-- | OpenSim/Framework/Servers/BaseStreamHandler.cs | 6 | ||||
-rw-r--r-- | OpenSim/Framework/Servers/ILlsdMethodHandler.cs | 37 | ||||
-rw-r--r-- | OpenSim/Framework/Servers/LlsdMethod.cs | 32 | ||||
-rw-r--r-- | OpenSim/Framework/Servers/OpenSim.Framework.Servers.csproj | 9 | ||||
-rw-r--r-- | OpenSim/Framework/Servers/OpenSim.Framework.Servers.dll.build | 3 | ||||
-rw-r--r-- | OpenSim/Framework/Servers/RestMethodEntry.cs | 27 | ||||
-rw-r--r-- | OpenSim/Framework/UserManager/LoginResponse.cs | 2 | ||||
-rw-r--r-- | OpenSim/Region/Capabilities/Caps.cs | 38 | ||||
-rw-r--r-- | OpenSim/Region/Capabilities/LLSDMethod.cs | 8 | ||||
-rw-r--r-- | OpenSim/Region/Capabilities/LLSDStreamHandler.cs | 40 | ||||
-rw-r--r-- | OpenSim/Region/Capabilities/OpenSim.Region.Capabilities.csproj | 6 | ||||
-rw-r--r-- | OpenSim/Region/Capabilities/OpenSim.Region.Capabilities.dll.build | 2 | ||||
-rw-r--r-- | OpenSim/Region/Examples/SimpleApp/LlsdMethodEntry.cs | 35 | ||||
-rw-r--r-- | OpenSim/Region/Examples/SimpleApp/Program.cs | 23 |
17 files changed, 387 insertions, 490 deletions
diff --git a/OpenGridServices.sln b/OpenGridServices.sln index 947dbb2..2343bc0 100644 --- a/OpenGridServices.sln +++ b/OpenGridServices.sln | |||
@@ -25,61 +25,72 @@ EndProject | |||
25 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSim.Grid.UserServer.Config", "OpenSim\Grid\UserServer.Config\OpenSim.Grid.UserServer.Config.csproj", "{08F87229-0000-0000-0000-000000000000}" | 25 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSim.Grid.UserServer.Config", "OpenSim\Grid\UserServer.Config\OpenSim.Grid.UserServer.Config.csproj", "{08F87229-0000-0000-0000-000000000000}" |
26 | EndProject | 26 | EndProject |
27 | Global | 27 | Global |
28 | GlobalSection(SolutionConfigurationPlatforms) = preSolution | 28 | GlobalSection(SolutionConfigurationPlatforms) = preSolution |
29 | Debug|Any CPU = Debug|Any CPU | 29 | Debug|Any CPU = Debug|Any CPU |
30 | Release|Any CPU = Release|Any CPU | 30 | Release|Any CPU = Release|Any CPU |
31 | EndGlobalSection | 31 | EndGlobalSection |
32 | GlobalSection(ProjectConfigurationPlatforms) = postSolution | 32 | GlobalSection(ProjectDependencies) = postSolution |
33 | {36B72A9B-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | 33 | ({FD2D303D-0000-0000-0000-000000000000}).2 = ({36B72A9B-0000-0000-0000-000000000000}) |
34 | {36B72A9B-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU | 34 | ({17F7F694-0000-0000-0000-000000000000}).1 = ({36B72A9B-0000-0000-0000-000000000000}) |
35 | {36B72A9B-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU | 35 | ({17F7F6BE-0000-0000-0000-000000000000}).2 = ({36B72A9B-0000-0000-0000-000000000000}) |
36 | {36B72A9B-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU | 36 | ({6ECC56A9-0000-0000-0000-000000000000}).1 = ({36B72A9B-0000-0000-0000-000000000000}) |
37 | {FD2D303D-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | 37 | ({586E2916-0000-0000-0000-000000000000}).4 = ({36B72A9B-0000-0000-0000-000000000000}) |
38 | {FD2D303D-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU | 38 | ({60FCC3A6-0000-0000-0000-000000000000}).4 = ({36B72A9B-0000-0000-0000-000000000000}) |
39 | {FD2D303D-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU | 39 | ({60FCC3A6-0000-0000-0000-000000000000}).7 = ({4B7BFD1C-0000-0000-0000-000000000000}) |
40 | {FD2D303D-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU | 40 | ({2FC96F92-0000-0000-0000-000000000000}).4 = ({36B72A9B-0000-0000-0000-000000000000}) |
41 | {17F7F694-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | 41 | ({2FC96F92-0000-0000-0000-000000000000}).7 = ({586E2916-0000-0000-0000-000000000000}) |
42 | {17F7F694-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU | 42 | EndGlobalSection |
43 | {17F7F694-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU | 43 | GlobalSection(ProjectConfigurationPlatforms) = postSolution |
44 | {17F7F694-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU | 44 | {36B72A9B-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
45 | {17F7F6BE-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | 45 | {36B72A9B-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU |
46 | {17F7F6BE-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU | 46 | {36B72A9B-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU |
47 | {17F7F6BE-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU | 47 | {36B72A9B-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU |
48 | {17F7F6BE-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU | 48 | {FD2D303D-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
49 | {6ECC56A9-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | 49 | {FD2D303D-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU |
50 | {6ECC56A9-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU | 50 | {FD2D303D-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU |
51 | {6ECC56A9-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU | 51 | {FD2D303D-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU |
52 | {6ECC56A9-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU | 52 | {17F7F694-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
53 | {586E2916-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | 53 | {17F7F694-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU |
54 | {586E2916-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU | 54 | {17F7F694-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU |
55 | {586E2916-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU | 55 | {17F7F694-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU |
56 | {586E2916-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU | 56 | {17F7F6BE-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
57 | {E5F1A03B-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | 57 | {17F7F6BE-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU |
58 | {E5F1A03B-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU | 58 | {17F7F6BE-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU |
59 | {E5F1A03B-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU | 59 | {17F7F6BE-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU |
60 | {E5F1A03B-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU | 60 | {6ECC56A9-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
61 | {4B7BFD1C-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | 61 | {6ECC56A9-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU |
62 | {4B7BFD1C-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU | 62 | {6ECC56A9-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU |
63 | {4B7BFD1C-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU | 63 | {6ECC56A9-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU |
64 | {4B7BFD1C-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU | 64 | {586E2916-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
65 | {60FCC3A6-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | 65 | {586E2916-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU |
66 | {60FCC3A6-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU | 66 | {586E2916-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU |
67 | {60FCC3A6-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU | 67 | {586E2916-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU |
68 | {60FCC3A6-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU | 68 | {E5F1A03B-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
69 | {1442B635-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | 69 | {E5F1A03B-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU |
70 | {1442B635-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU | 70 | {E5F1A03B-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU |
71 | {1442B635-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU | 71 | {E5F1A03B-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU |
72 | {1442B635-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU | 72 | {4B7BFD1C-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
73 | {2FC96F92-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | 73 | {4B7BFD1C-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU |
74 | {2FC96F92-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU | 74 | {4B7BFD1C-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU |
75 | {2FC96F92-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU | 75 | {4B7BFD1C-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU |
76 | {2FC96F92-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU | 76 | {60FCC3A6-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
77 | {08F87229-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | 77 | {60FCC3A6-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU |
78 | {08F87229-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU | 78 | {60FCC3A6-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU |
79 | {08F87229-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU | 79 | {60FCC3A6-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU |
80 | {08F87229-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU | 80 | {1442B635-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
81 | EndGlobalSection | 81 | {1442B635-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU |
82 | GlobalSection(SolutionProperties) = preSolution | 82 | {1442B635-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU |
83 | HideSolutionNode = FALSE | 83 | {1442B635-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU |
84 | EndGlobalSection | 84 | {2FC96F92-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
85 | {2FC96F92-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||
86 | {2FC96F92-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||
87 | {2FC96F92-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU | ||
88 | {08F87229-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||
89 | {08F87229-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||
90 | {08F87229-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||
91 | {08F87229-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU | ||
92 | EndGlobalSection | ||
93 | GlobalSection(SolutionProperties) = preSolution | ||
94 | HideSolutionNode = FALSE | ||
95 | EndGlobalSection | ||
85 | EndGlobal | 96 | EndGlobal |
diff --git a/OpenSim.sln b/OpenSim.sln index bd39235..54743ee 100644 --- a/OpenSim.sln +++ b/OpenSim.sln | |||
@@ -53,117 +53,200 @@ EndProject | |||
53 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SimpleApp", "OpenSim\Region\Examples\SimpleApp\SimpleApp.csproj", "{24B12448-0000-0000-0000-000000000000}" | 53 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SimpleApp", "OpenSim\Region\Examples\SimpleApp\SimpleApp.csproj", "{24B12448-0000-0000-0000-000000000000}" |
54 | EndProject | 54 | EndProject |
55 | Global | 55 | Global |
56 | GlobalSection(SolutionConfigurationPlatforms) = preSolution | 56 | GlobalSection(SolutionConfigurationPlatforms) = preSolution |
57 | Debug|Any CPU = Debug|Any CPU | 57 | Debug|Any CPU = Debug|Any CPU |
58 | Release|Any CPU = Release|Any CPU | 58 | Release|Any CPU = Release|Any CPU |
59 | EndGlobalSection | 59 | EndGlobalSection |
60 | GlobalSection(ProjectConfigurationPlatforms) = postSolution | 60 | GlobalSection(ProjectDependencies) = postSolution |
61 | {438A9556-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | 61 | ({438A9556-0000-0000-0000-000000000000}).3 = ({8ACA2445-0000-0000-0000-000000000000}) |
62 | {438A9556-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU | 62 | ({438A9556-0000-0000-0000-000000000000}).4 = ({CB52B7E7-0000-0000-0000-000000000000}) |
63 | {438A9556-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU | 63 | ({438A9556-0000-0000-0000-000000000000}).5 = ({A7CD0630-0000-0000-0000-000000000000}) |
64 | {438A9556-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU | 64 | ({438A9556-0000-0000-0000-000000000000}).6 = ({36B72A9B-0000-0000-0000-000000000000}) |
65 | {8ACA2445-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | 65 | ({438A9556-0000-0000-0000-000000000000}).7 = ({C74E4A30-0000-0000-0000-000000000000}) |
66 | {8ACA2445-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU | 66 | ({438A9556-0000-0000-0000-000000000000}).8 = ({2CC71860-0000-0000-0000-000000000000}) |
67 | {8ACA2445-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU | 67 | ({438A9556-0000-0000-0000-000000000000}).9 = ({586E2916-0000-0000-0000-000000000000}) |
68 | {8ACA2445-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU | 68 | ({438A9556-0000-0000-0000-000000000000}).10 = ({61FCCDB3-0000-0000-0000-000000000000}) |
69 | {CB52B7E7-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | 69 | ({438A9556-0000-0000-0000-000000000000}).11 = ({DC3698B2-0000-0000-0000-000000000000}) |
70 | {CB52B7E7-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU | 70 | ({438A9556-0000-0000-0000-000000000000}).12 = ({BFB5D807-0000-0000-0000-000000000000}) |
71 | {CB52B7E7-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU | 71 | ({438A9556-0000-0000-0000-000000000000}).13 = ({4806E378-0000-0000-0000-000000000000}) |
72 | {CB52B7E7-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU | 72 | ({438A9556-0000-0000-0000-000000000000}).14 = ({DCBA491C-0000-0000-0000-000000000000}) |
73 | {A7CD0630-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | 73 | ({438A9556-0000-0000-0000-000000000000}).15 = ({F4FF31EB-0000-0000-0000-000000000000}) |
74 | {A7CD0630-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU | 74 | ({438A9556-0000-0000-0000-000000000000}).16 = ({C9E0F891-0000-0000-0000-000000000000}) |
75 | {A7CD0630-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU | 75 | ({8ACA2445-0000-0000-0000-000000000000}).2 = ({A7CD0630-0000-0000-0000-000000000000}) |
76 | {A7CD0630-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU | 76 | ({CB52B7E7-0000-0000-0000-000000000000}).1 = ({8ACA2445-0000-0000-0000-000000000000}) |
77 | {36B72A9B-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | 77 | ({CB52B7E7-0000-0000-0000-000000000000}).2 = ({36B72A9B-0000-0000-0000-000000000000}) |
78 | {36B72A9B-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU | 78 | ({FD2D303D-0000-0000-0000-000000000000}).2 = ({36B72A9B-0000-0000-0000-000000000000}) |
79 | {36B72A9B-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU | 79 | ({C74E4A30-0000-0000-0000-000000000000}).0 = ({8ACA2445-0000-0000-0000-000000000000}) |
80 | {36B72A9B-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU | 80 | ({2CC71860-0000-0000-0000-000000000000}).1 = ({8ACA2445-0000-0000-0000-000000000000}) |
81 | {FD2D303D-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | 81 | ({2CC71860-0000-0000-0000-000000000000}).2 = ({A7CD0630-0000-0000-0000-000000000000}) |
82 | {FD2D303D-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU | 82 | ({586E2916-0000-0000-0000-000000000000}).2 = ({8ACA2445-0000-0000-0000-000000000000}) |
83 | {FD2D303D-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU | 83 | ({586E2916-0000-0000-0000-000000000000}).3 = ({A7CD0630-0000-0000-0000-000000000000}) |
84 | {FD2D303D-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU | 84 | ({586E2916-0000-0000-0000-000000000000}).4 = ({36B72A9B-0000-0000-0000-000000000000}) |
85 | {C74E4A30-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | 85 | ({586E2916-0000-0000-0000-000000000000}).5 = ({C74E4A30-0000-0000-0000-000000000000}) |
86 | {C74E4A30-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU | 86 | ({586E2916-0000-0000-0000-000000000000}).6 = ({2CC71860-0000-0000-0000-000000000000}) |
87 | {C74E4A30-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU | 87 | ({61FCCDB3-0000-0000-0000-000000000000}).1 = ({8ACA2445-0000-0000-0000-000000000000}) |
88 | {C74E4A30-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU | 88 | ({39038E85-0000-0000-0000-000000000000}).1 = ({8ACA2445-0000-0000-0000-000000000000}) |
89 | {2CC71860-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | 89 | ({39038E85-0000-0000-0000-000000000000}).2 = ({2CC71860-0000-0000-0000-000000000000}) |
90 | {2CC71860-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU | 90 | ({39038E85-0000-0000-0000-000000000000}).3 = ({61FCCDB3-0000-0000-0000-000000000000}) |
91 | {2CC71860-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU | 91 | ({DC3698B2-0000-0000-0000-000000000000}).3 = ({8ACA2445-0000-0000-0000-000000000000}) |
92 | {2CC71860-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU | 92 | ({DC3698B2-0000-0000-0000-000000000000}).4 = ({A7CD0630-0000-0000-0000-000000000000}) |
93 | {586E2916-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | 93 | ({DC3698B2-0000-0000-0000-000000000000}).5 = ({2CC71860-0000-0000-0000-000000000000}) |
94 | {586E2916-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU | 94 | ({DC3698B2-0000-0000-0000-000000000000}).6 = ({61FCCDB3-0000-0000-0000-000000000000}) |
95 | {586E2916-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU | 95 | ({DC3698B2-0000-0000-0000-000000000000}).7 = ({F4FF31EB-0000-0000-0000-000000000000}) |
96 | {586E2916-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU | 96 | ({DC3698B2-0000-0000-0000-000000000000}).8 = ({C9E0F891-0000-0000-0000-000000000000}) |
97 | {61FCCDB3-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | 97 | ({BFB5D807-0000-0000-0000-000000000000}).1 = ({8ACA2445-0000-0000-0000-000000000000}) |
98 | {61FCCDB3-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU | 98 | ({BFB5D807-0000-0000-0000-000000000000}).2 = ({CB52B7E7-0000-0000-0000-000000000000}) |
99 | {61FCCDB3-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU | 99 | ({BFB5D807-0000-0000-0000-000000000000}).3 = ({36B72A9B-0000-0000-0000-000000000000}) |
100 | {61FCCDB3-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU | 100 | ({BFB5D807-0000-0000-0000-000000000000}).4 = ({586E2916-0000-0000-0000-000000000000}) |
101 | {39038E85-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | 101 | ({4806E378-0000-0000-0000-000000000000}).1 = ({8ACA2445-0000-0000-0000-000000000000}) |
102 | {39038E85-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU | 102 | ({4806E378-0000-0000-0000-000000000000}).2 = ({CB52B7E7-0000-0000-0000-000000000000}) |
103 | {39038E85-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU | 103 | ({4806E378-0000-0000-0000-000000000000}).3 = ({A7CD0630-0000-0000-0000-000000000000}) |
104 | {39038E85-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU | 104 | ({4806E378-0000-0000-0000-000000000000}).4 = ({36B72A9B-0000-0000-0000-000000000000}) |
105 | {DC3698B2-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | 105 | ({4806E378-0000-0000-0000-000000000000}).5 = ({2CC71860-0000-0000-0000-000000000000}) |
106 | {DC3698B2-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU | 106 | ({DCBA491C-0000-0000-0000-000000000000}).4 = ({8ACA2445-0000-0000-0000-000000000000}) |
107 | {DC3698B2-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU | 107 | ({DCBA491C-0000-0000-0000-000000000000}).5 = ({CB52B7E7-0000-0000-0000-000000000000}) |
108 | {DC3698B2-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU | 108 | ({DCBA491C-0000-0000-0000-000000000000}).6 = ({A7CD0630-0000-0000-0000-000000000000}) |
109 | {BFB5D807-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | 109 | ({DCBA491C-0000-0000-0000-000000000000}).7 = ({C74E4A30-0000-0000-0000-000000000000}) |
110 | {BFB5D807-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU | 110 | ({DCBA491C-0000-0000-0000-000000000000}).8 = ({2CC71860-0000-0000-0000-000000000000}) |
111 | {BFB5D807-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU | 111 | ({DCBA491C-0000-0000-0000-000000000000}).9 = ({61FCCDB3-0000-0000-0000-000000000000}) |
112 | {BFB5D807-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU | 112 | ({DCBA491C-0000-0000-0000-000000000000}).10 = ({39038E85-0000-0000-0000-000000000000}) |
113 | {4806E378-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | 113 | ({DCBA491C-0000-0000-0000-000000000000}).11 = ({F4FF31EB-0000-0000-0000-000000000000}) |
114 | {4806E378-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU | 114 | ({DCBA491C-0000-0000-0000-000000000000}).12 = ({C9E0F891-0000-0000-0000-000000000000}) |
115 | {4806E378-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU | 115 | ({241A8CDD-0000-0000-0000-000000000000}).2 = ({8ACA2445-0000-0000-0000-000000000000}) |
116 | {4806E378-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU | 116 | ({241A8CDD-0000-0000-0000-000000000000}).3 = ({A7CD0630-0000-0000-0000-000000000000}) |
117 | {DCBA491C-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | 117 | ({98C7B681-0000-0000-0000-000000000000}).1 = ({8ACA2445-0000-0000-0000-000000000000}) |
118 | {DCBA491C-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU | 118 | ({98C7B681-0000-0000-0000-000000000000}).2 = ({A7CD0630-0000-0000-0000-000000000000}) |
119 | {DCBA491C-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU | 119 | ({15B4FEF3-0000-0000-0000-000000000000}).1 = ({F4FF31EB-0000-0000-0000-000000000000}) |
120 | {DCBA491C-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU | 120 | ({F4FF31EB-0000-0000-0000-000000000000}).1 = ({8ACA2445-0000-0000-0000-000000000000}) |
121 | {241A8CDD-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | 121 | ({F4FF31EB-0000-0000-0000-000000000000}).2 = ({A7CD0630-0000-0000-0000-000000000000}) |
122 | {241A8CDD-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU | 122 | ({90620634-0000-0000-0000-000000000000}).2 = ({F4FF31EB-0000-0000-0000-000000000000}) |
123 | {241A8CDD-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU | 123 | ({A6D191D8-0000-0000-0000-000000000000}).1 = ({F4FF31EB-0000-0000-0000-000000000000}) |
124 | {241A8CDD-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU | 124 | ({A4691E59-0000-0000-0000-000000000000}).3 = ({8ACA2445-0000-0000-0000-000000000000}) |
125 | {98C7B681-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | 125 | ({A4691E59-0000-0000-0000-000000000000}).4 = ({A7CD0630-0000-0000-0000-000000000000}) |
126 | {98C7B681-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU | 126 | ({43DB702D-0000-0000-0000-000000000000}).2 = ({8ACA2445-0000-0000-0000-000000000000}) |
127 | {98C7B681-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU | 127 | ({43DB702D-0000-0000-0000-000000000000}).3 = ({A7CD0630-0000-0000-0000-000000000000}) |
128 | {98C7B681-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU | 128 | ({477B9270-0000-0000-0000-000000000000}).1 = ({8ACA2445-0000-0000-0000-000000000000}) |
129 | {15B4FEF3-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | 129 | ({477B9270-0000-0000-0000-000000000000}).2 = ({A7CD0630-0000-0000-0000-000000000000}) |
130 | {15B4FEF3-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU | 130 | ({24B12448-0000-0000-0000-000000000000}).1 = ({8ACA2445-0000-0000-0000-000000000000}) |
131 | {15B4FEF3-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU | 131 | ({24B12448-0000-0000-0000-000000000000}).2 = ({CB52B7E7-0000-0000-0000-000000000000}) |
132 | {15B4FEF3-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU | 132 | ({24B12448-0000-0000-0000-000000000000}).3 = ({A7CD0630-0000-0000-0000-000000000000}) |
133 | {F4FF31EB-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | 133 | ({24B12448-0000-0000-0000-000000000000}).4 = ({2CC71860-0000-0000-0000-000000000000}) |
134 | {F4FF31EB-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU | 134 | ({24B12448-0000-0000-0000-000000000000}).5 = ({586E2916-0000-0000-0000-000000000000}) |
135 | {F4FF31EB-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU | 135 | ({24B12448-0000-0000-0000-000000000000}).6 = ({61FCCDB3-0000-0000-0000-000000000000}) |
136 | {F4FF31EB-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU | 136 | ({24B12448-0000-0000-0000-000000000000}).7 = ({39038E85-0000-0000-0000-000000000000}) |
137 | {90620634-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | 137 | ({24B12448-0000-0000-0000-000000000000}).8 = ({DC3698B2-0000-0000-0000-000000000000}) |
138 | {90620634-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU | 138 | ({24B12448-0000-0000-0000-000000000000}).9 = ({BFB5D807-0000-0000-0000-000000000000}) |
139 | {90620634-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU | 139 | ({24B12448-0000-0000-0000-000000000000}).10 = ({DCBA491C-0000-0000-0000-000000000000}) |
140 | {90620634-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU | 140 | ({24B12448-0000-0000-0000-000000000000}).11 = ({241A8CDD-0000-0000-0000-000000000000}) |
141 | {A6D191D8-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | 141 | ({24B12448-0000-0000-0000-000000000000}).12 = ({F4FF31EB-0000-0000-0000-000000000000}) |
142 | {A6D191D8-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU | 142 | EndGlobalSection |
143 | {A6D191D8-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU | 143 | GlobalSection(ProjectConfigurationPlatforms) = postSolution |
144 | {A6D191D8-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU | 144 | {438A9556-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
145 | {A4691E59-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | 145 | {438A9556-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU |
146 | {A4691E59-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU | 146 | {438A9556-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU |
147 | {A4691E59-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU | 147 | {438A9556-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU |
148 | {A4691E59-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU | 148 | {8ACA2445-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
149 | {43DB702D-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | 149 | {8ACA2445-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU |
150 | {43DB702D-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU | 150 | {8ACA2445-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU |
151 | {43DB702D-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU | 151 | {8ACA2445-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU |
152 | {43DB702D-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU | 152 | {CB52B7E7-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
153 | {477B9270-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | 153 | {CB52B7E7-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU |
154 | {477B9270-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU | 154 | {CB52B7E7-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU |
155 | {477B9270-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU | 155 | {CB52B7E7-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU |
156 | {477B9270-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU | 156 | {A7CD0630-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
157 | {C9E0F891-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | 157 | {A7CD0630-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU |
158 | {C9E0F891-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU | 158 | {A7CD0630-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU |
159 | {C9E0F891-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU | 159 | {A7CD0630-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU |
160 | {C9E0F891-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU | 160 | {36B72A9B-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
161 | {24B12448-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | 161 | {36B72A9B-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU |
162 | {24B12448-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU | 162 | {36B72A9B-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU |
163 | {24B12448-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU | 163 | {36B72A9B-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU |
164 | {24B12448-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU | 164 | {FD2D303D-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
165 | EndGlobalSection | 165 | {FD2D303D-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU |
166 | GlobalSection(SolutionProperties) = preSolution | 166 | {FD2D303D-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU |
167 | HideSolutionNode = FALSE | 167 | {FD2D303D-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU |
168 | EndGlobalSection | 168 | {C74E4A30-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
169 | {C74E4A30-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||
170 | {C74E4A30-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||
171 | {C74E4A30-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU | ||
172 | {2CC71860-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||
173 | {2CC71860-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||
174 | {2CC71860-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||
175 | {2CC71860-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU | ||
176 | {586E2916-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||
177 | {586E2916-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||
178 | {586E2916-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||
179 | {586E2916-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU | ||
180 | {61FCCDB3-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||
181 | {61FCCDB3-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||
182 | {61FCCDB3-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||
183 | {61FCCDB3-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU | ||
184 | {39038E85-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||
185 | {39038E85-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||
186 | {39038E85-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||
187 | {39038E85-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU | ||
188 | {DC3698B2-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||
189 | {DC3698B2-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||
190 | {DC3698B2-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||
191 | {DC3698B2-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU | ||
192 | {BFB5D807-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||
193 | {BFB5D807-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||
194 | {BFB5D807-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||
195 | {BFB5D807-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU | ||
196 | {4806E378-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||
197 | {4806E378-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||
198 | {4806E378-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||
199 | {4806E378-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU | ||
200 | {DCBA491C-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||
201 | {DCBA491C-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||
202 | {DCBA491C-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||
203 | {DCBA491C-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU | ||
204 | {241A8CDD-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||
205 | {241A8CDD-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||
206 | {241A8CDD-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||
207 | {241A8CDD-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU | ||
208 | {98C7B681-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||
209 | {98C7B681-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||
210 | {98C7B681-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||
211 | {98C7B681-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU | ||
212 | {15B4FEF3-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||
213 | {15B4FEF3-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||
214 | {15B4FEF3-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||
215 | {15B4FEF3-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU | ||
216 | {F4FF31EB-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||
217 | {F4FF31EB-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||
218 | {F4FF31EB-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||
219 | {F4FF31EB-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU | ||
220 | {90620634-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||
221 | {90620634-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||
222 | {90620634-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||
223 | {90620634-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU | ||
224 | {A6D191D8-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||
225 | {A6D191D8-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||
226 | {A6D191D8-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||
227 | {A6D191D8-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU | ||
228 | {A4691E59-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||
229 | {A4691E59-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||
230 | {A4691E59-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||
231 | {A4691E59-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU | ||
232 | {43DB702D-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||
233 | {43DB702D-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||
234 | {43DB702D-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||
235 | {43DB702D-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU | ||
236 | {477B9270-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||
237 | {477B9270-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||
238 | {477B9270-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||
239 | {477B9270-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU | ||
240 | {C9E0F891-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||
241 | {C9E0F891-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||
242 | {C9E0F891-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||
243 | {C9E0F891-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU | ||
244 | {24B12448-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||
245 | {24B12448-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||
246 | {24B12448-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||
247 | {24B12448-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU | ||
248 | EndGlobalSection | ||
249 | GlobalSection(SolutionProperties) = preSolution | ||
250 | HideSolutionNode = FALSE | ||
251 | EndGlobalSection | ||
169 | EndGlobal | 252 | EndGlobal |
diff --git a/OpenSim/Framework/Servers/BaseHttpServer.cs b/OpenSim/Framework/Servers/BaseHttpServer.cs index aed538b..84af9f6 100644 --- a/OpenSim/Framework/Servers/BaseHttpServer.cs +++ b/OpenSim/Framework/Servers/BaseHttpServer.cs | |||
@@ -42,7 +42,6 @@ namespace OpenSim.Framework.Servers | |||
42 | { | 42 | { |
43 | protected Thread m_workerThread; | 43 | protected Thread m_workerThread; |
44 | protected HttpListener m_httpListener; | 44 | protected HttpListener m_httpListener; |
45 | //protected Dictionary<string, RestMethodEntry> m_restHandlers = new Dictionary<string, RestMethodEntry>(); | ||
46 | protected Dictionary<string, XmlRpcMethod> m_rpcHandlers = new Dictionary<string, XmlRpcMethod>(); | 45 | protected Dictionary<string, XmlRpcMethod> m_rpcHandlers = new Dictionary<string, XmlRpcMethod>(); |
47 | protected Dictionary<string, IStreamHandler> m_streamHandlers = new Dictionary<string, IStreamHandler>(); | 46 | protected Dictionary<string, IStreamHandler> m_streamHandlers = new Dictionary<string, IStreamHandler>(); |
48 | protected int m_port; | 47 | protected int m_port; |
@@ -67,32 +66,6 @@ namespace OpenSim.Framework.Servers | |||
67 | return httpMethod + ":" + path; | 66 | return httpMethod + ":" + path; |
68 | } | 67 | } |
69 | 68 | ||
70 | //public bool AddRestHandler(string method, string path, RestMethod handler) | ||
71 | //{ | ||
72 | // //Console.WriteLine("adding new REST handler for path " + path); | ||
73 | // string methodKey = String.Format("{0}: {1}", method, path); | ||
74 | |||
75 | // if (!this.m_restHandlers.ContainsKey(methodKey)) | ||
76 | // { | ||
77 | // this.m_restHandlers.Add(methodKey, new RestMethodEntry(path, handler)); | ||
78 | // return true; | ||
79 | // } | ||
80 | |||
81 | // //must already have a handler for that path so return false | ||
82 | // return false; | ||
83 | //} | ||
84 | |||
85 | //public bool RemoveRestHandler(string method, string path) | ||
86 | //{ | ||
87 | // string methodKey = String.Format("{0}: {1}", method, path); | ||
88 | // if (this.m_restHandlers.ContainsKey(methodKey)) | ||
89 | // { | ||
90 | // this.m_restHandlers.Remove(methodKey); | ||
91 | // return true; | ||
92 | // } | ||
93 | // return false; | ||
94 | //} | ||
95 | |||
96 | public bool AddXmlRPCHandler(string method, XmlRpcMethod handler) | 69 | public bool AddXmlRPCHandler(string method, XmlRpcMethod handler) |
97 | { | 70 | { |
98 | if (!this.m_rpcHandlers.ContainsKey(method)) | 71 | if (!this.m_rpcHandlers.ContainsKey(method)) |
@@ -105,76 +78,6 @@ namespace OpenSim.Framework.Servers | |||
105 | return false; | 78 | return false; |
106 | } | 79 | } |
107 | 80 | ||
108 | protected virtual string ProcessXMLRPCMethod(string methodName, XmlRpcRequest request) | ||
109 | { | ||
110 | XmlRpcResponse response; | ||
111 | |||
112 | XmlRpcMethod method; | ||
113 | if (this.m_rpcHandlers.TryGetValue(methodName, out method)) | ||
114 | { | ||
115 | response = method(request); | ||
116 | } | ||
117 | else | ||
118 | { | ||
119 | response = new XmlRpcResponse(); | ||
120 | Hashtable unknownMethodError = new Hashtable(); | ||
121 | unknownMethodError["reason"] = "XmlRequest"; ; | ||
122 | unknownMethodError["message"] = "Unknown Rpc request"; | ||
123 | unknownMethodError["login"] = "false"; | ||
124 | response.Value = unknownMethodError; | ||
125 | } | ||
126 | |||
127 | return XmlRpcResponseSerializer.Singleton.Serialize(response); | ||
128 | } | ||
129 | |||
130 | //protected virtual string ParseREST(string request, string path, string method) | ||
131 | //{ | ||
132 | // string response; | ||
133 | |||
134 | // string requestKey = String.Format("{0}: {1}", method, path); | ||
135 | |||
136 | // string bestMatch = String.Empty; | ||
137 | // foreach (string currentKey in m_restHandlers.Keys) | ||
138 | // { | ||
139 | // if (requestKey.StartsWith(currentKey)) | ||
140 | // { | ||
141 | // if (currentKey.Length > bestMatch.Length) | ||
142 | // { | ||
143 | // bestMatch = currentKey; | ||
144 | // } | ||
145 | // } | ||
146 | // } | ||
147 | |||
148 | // RestMethodEntry restMethodEntry; | ||
149 | // if (m_restHandlers.TryGetValue(bestMatch, out restMethodEntry)) | ||
150 | // { | ||
151 | // RestMethod restMethod = restMethodEntry.RestMethod; | ||
152 | |||
153 | // string param = path.Substring(restMethodEntry.Path.Length); | ||
154 | // response = restMethod(request, path, param); | ||
155 | |||
156 | // } | ||
157 | // else | ||
158 | // { | ||
159 | // response = String.Empty; | ||
160 | // } | ||
161 | |||
162 | // return response; | ||
163 | //} | ||
164 | |||
165 | |||
166 | protected virtual string ParseXMLRPC(string requestBody) | ||
167 | { | ||
168 | string responseString = String.Empty; | ||
169 | |||
170 | XmlRpcRequest request = (XmlRpcRequest)(new XmlRpcRequestDeserializer()).Deserialize(requestBody); | ||
171 | |||
172 | string methodName = request.MethodName; | ||
173 | |||
174 | responseString = ProcessXMLRPCMethod(methodName, request); | ||
175 | |||
176 | return responseString; | ||
177 | } | ||
178 | 81 | ||
179 | public virtual void HandleRequest(Object stateinfo) | 82 | public virtual void HandleRequest(Object stateinfo) |
180 | { | 83 | { |
@@ -203,7 +106,7 @@ namespace OpenSim.Framework.Servers | |||
203 | } | 106 | } |
204 | else | 107 | else |
205 | { | 108 | { |
206 | HandleLegacyRequests(request, response); | 109 | HandleXmlRpcRequests(request, response); |
207 | } | 110 | } |
208 | } | 111 | } |
209 | 112 | ||
@@ -234,64 +137,54 @@ namespace OpenSim.Framework.Servers | |||
234 | } | 137 | } |
235 | } | 138 | } |
236 | 139 | ||
237 | private void HandleLegacyRequests(HttpListenerRequest request, HttpListenerResponse response) | 140 | private void HandleXmlRpcRequests(HttpListenerRequest request, HttpListenerResponse response) |
238 | { | 141 | { |
239 | Stream body = request.InputStream; | 142 | Stream requestStream = request.InputStream; |
240 | 143 | ||
241 | Encoding encoding = Encoding.UTF8; | 144 | Encoding encoding = Encoding.UTF8; |
242 | StreamReader reader = new StreamReader(body, encoding); | 145 | StreamReader reader = new StreamReader(requestStream, encoding); |
243 | 146 | ||
244 | string requestBody = reader.ReadToEnd(); | 147 | string requestBody = reader.ReadToEnd(); |
245 | body.Close(); | ||
246 | reader.Close(); | 148 | reader.Close(); |
149 | requestStream.Close(); | ||
247 | 150 | ||
248 | //Console.WriteLine(request.HttpMethod + " " + request.RawUrl + " Http/" + request.ProtocolVersion.ToString() + " content type: " + request.ContentType); | 151 | XmlRpcRequest xmlRprcRequest = (XmlRpcRequest)(new XmlRpcRequestDeserializer()).Deserialize(requestBody); |
249 | //Console.WriteLine(requestBody); | ||
250 | 152 | ||
251 | string responseString = ""; | 153 | string methodName = xmlRprcRequest.MethodName; |
252 | // Console.WriteLine("new request " + request.ContentType +" at "+ request.RawUrl); | 154 | |
253 | switch (request.ContentType) | 155 | XmlRpcResponse xmlRpcResponse; |
254 | { | ||
255 | case "text/xml": | ||
256 | // must be XML-RPC, so pass to the XML-RPC parser | ||
257 | |||
258 | responseString = ParseXMLRPC(requestBody); | ||
259 | responseString = Regex.Replace(responseString, "utf-16", "utf-8"); | ||
260 | |||
261 | response.AddHeader("Content-type", "text/xml"); | ||
262 | break; | ||
263 | |||
264 | //case "application/xml": | ||
265 | //case "application/octet-stream": | ||
266 | // // probably LLSD we hope, otherwise it should be ignored by the parser | ||
267 | // // responseString = ParseLLSDXML(requestBody); | ||
268 | // responseString = ParseREST(requestBody, request.RawUrl, request.HttpMethod); | ||
269 | // response.AddHeader("Content-type", "application/xml"); | ||
270 | // break; | ||
271 | |||
272 | //case "application/x-www-form-urlencoded": | ||
273 | // // a form data POST so send to the REST parser | ||
274 | // responseString = ParseREST(requestBody, request.RawUrl, request.HttpMethod); | ||
275 | // response.AddHeader("Content-type", "text/html"); | ||
276 | // break; | ||
277 | |||
278 | //case null: | ||
279 | // // must be REST or invalid crap, so pass to the REST parser | ||
280 | // responseString = ParseREST(requestBody, request.RawUrl, request.HttpMethod); | ||
281 | // response.AddHeader("Content-type", "text/html"); | ||
282 | // break; | ||
283 | 156 | ||
157 | XmlRpcMethod method; | ||
158 | if (this.m_rpcHandlers.TryGetValue(methodName, out method)) | ||
159 | { | ||
160 | xmlRpcResponse = method(xmlRprcRequest); | ||
284 | } | 161 | } |
162 | else | ||
163 | { | ||
164 | xmlRpcResponse = new XmlRpcResponse(); | ||
165 | Hashtable unknownMethodError = new Hashtable(); | ||
166 | unknownMethodError["reason"] = "XmlRequest"; ; | ||
167 | unknownMethodError["message"] = "Unknown Rpc Request ["+methodName+"]"; | ||
168 | unknownMethodError["login"] = "false"; | ||
169 | xmlRpcResponse.Value = unknownMethodError; | ||
170 | } | ||
171 | |||
172 | response.AddHeader("Content-type", "text/xml"); | ||
285 | 173 | ||
174 | string responseString = XmlRpcResponseSerializer.Singleton.Serialize(xmlRpcResponse); | ||
175 | |||
176 | // This must be absolutely fuggliest hack in this project. Don't just stand there, DO SOMETHING! | ||
177 | responseString = Regex.Replace(responseString, "utf-16", "utf-8"); | ||
178 | |||
286 | byte[] buffer = Encoding.UTF8.GetBytes(responseString); | 179 | byte[] buffer = Encoding.UTF8.GetBytes(responseString); |
287 | Stream output = response.OutputStream; | 180 | |
181 | |||
288 | response.SendChunked = false; | 182 | response.SendChunked = false; |
289 | response.ContentLength64 = buffer.Length; | 183 | response.ContentLength64 = buffer.Length; |
184 | response.ContentEncoding = Encoding.UTF8; | ||
290 | 185 | ||
291 | 186 | response.OutputStream.Write(buffer, 0, buffer.Length); | |
292 | 187 | response.OutputStream.Close(); | |
293 | output.Write(buffer, 0, buffer.Length); | ||
294 | output.Close(); | ||
295 | } | 188 | } |
296 | 189 | ||
297 | public void Start() | 190 | public void Start() |
diff --git a/OpenSim/Framework/Servers/BaseStreamHandler.cs b/OpenSim/Framework/Servers/BaseStreamHandler.cs index 95e9707..5fcf678 100644 --- a/OpenSim/Framework/Servers/BaseStreamHandler.cs +++ b/OpenSim/Framework/Servers/BaseStreamHandler.cs | |||
@@ -7,19 +7,19 @@ namespace OpenSim.Framework.Servers | |||
7 | { | 7 | { |
8 | public abstract class BaseStreamHandler : IStreamHandler | 8 | public abstract class BaseStreamHandler : IStreamHandler |
9 | { | 9 | { |
10 | public string ContentType | 10 | virtual public string ContentType |
11 | { | 11 | { |
12 | get { return "application/xml"; } | 12 | get { return "application/xml"; } |
13 | } | 13 | } |
14 | 14 | ||
15 | private string m_httpMethod; | 15 | private string m_httpMethod; |
16 | public string HttpMethod | 16 | virtual public string HttpMethod |
17 | { | 17 | { |
18 | get { return m_httpMethod; } | 18 | get { return m_httpMethod; } |
19 | } | 19 | } |
20 | 20 | ||
21 | private string m_path; | 21 | private string m_path; |
22 | public string Path | 22 | virtual public string Path |
23 | { | 23 | { |
24 | get { return m_path; } | 24 | get { return m_path; } |
25 | } | 25 | } |
diff --git a/OpenSim/Framework/Servers/ILlsdMethodHandler.cs b/OpenSim/Framework/Servers/ILlsdMethodHandler.cs deleted file mode 100644 index 5382f2d..0000000 --- a/OpenSim/Framework/Servers/ILlsdMethodHandler.cs +++ /dev/null | |||
@@ -1,37 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://www.openmetaverse.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSim Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | * | ||
27 | */ | ||
28 | |||
29 | namespace OpenSim.Framework.Servers | ||
30 | { | ||
31 | public interface ILlsdMethodHandler | ||
32 | { | ||
33 | string Handle(string request, string path); | ||
34 | } | ||
35 | |||
36 | |||
37 | } | ||
diff --git a/OpenSim/Framework/Servers/LlsdMethod.cs b/OpenSim/Framework/Servers/LlsdMethod.cs deleted file mode 100644 index d17fa38..0000000 --- a/OpenSim/Framework/Servers/LlsdMethod.cs +++ /dev/null | |||
@@ -1,32 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://www.openmetaverse.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSim Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | * | ||
27 | */ | ||
28 | |||
29 | namespace OpenSim.Framework.Servers | ||
30 | { | ||
31 | public delegate TResponse LlsdMethod<TResponse, TRequest>( TRequest request ); | ||
32 | } | ||
diff --git a/OpenSim/Framework/Servers/OpenSim.Framework.Servers.csproj b/OpenSim/Framework/Servers/OpenSim.Framework.Servers.csproj index 4eb9844..cf2236a 100644 --- a/OpenSim/Framework/Servers/OpenSim.Framework.Servers.csproj +++ b/OpenSim/Framework/Servers/OpenSim.Framework.Servers.csproj | |||
@@ -99,21 +99,12 @@ | |||
99 | <Compile Include="CheckSumServer.cs"> | 99 | <Compile Include="CheckSumServer.cs"> |
100 | <SubType>Code</SubType> | 100 | <SubType>Code</SubType> |
101 | </Compile> | 101 | </Compile> |
102 | <Compile Include="ILlsdMethodHandler.cs"> | ||
103 | <SubType>Code</SubType> | ||
104 | </Compile> | ||
105 | <Compile Include="IStreamHandler.cs"> | 102 | <Compile Include="IStreamHandler.cs"> |
106 | <SubType>Code</SubType> | 103 | <SubType>Code</SubType> |
107 | </Compile> | 104 | </Compile> |
108 | <Compile Include="LlsdMethod.cs"> | ||
109 | <SubType>Code</SubType> | ||
110 | </Compile> | ||
111 | <Compile Include="RestMethod.cs"> | 105 | <Compile Include="RestMethod.cs"> |
112 | <SubType>Code</SubType> | 106 | <SubType>Code</SubType> |
113 | </Compile> | 107 | </Compile> |
114 | <Compile Include="RestMethodEntry.cs"> | ||
115 | <SubType>Code</SubType> | ||
116 | </Compile> | ||
117 | <Compile Include="RestStreamHandler.cs"> | 108 | <Compile Include="RestStreamHandler.cs"> |
118 | <SubType>Code</SubType> | 109 | <SubType>Code</SubType> |
119 | </Compile> | 110 | </Compile> |
diff --git a/OpenSim/Framework/Servers/OpenSim.Framework.Servers.dll.build b/OpenSim/Framework/Servers/OpenSim.Framework.Servers.dll.build index 5e96ef1..f837c22 100644 --- a/OpenSim/Framework/Servers/OpenSim.Framework.Servers.dll.build +++ b/OpenSim/Framework/Servers/OpenSim.Framework.Servers.dll.build | |||
@@ -14,11 +14,8 @@ | |||
14 | <include name="BaseHttpServer.cs" /> | 14 | <include name="BaseHttpServer.cs" /> |
15 | <include name="BaseStreamHandler.cs" /> | 15 | <include name="BaseStreamHandler.cs" /> |
16 | <include name="CheckSumServer.cs" /> | 16 | <include name="CheckSumServer.cs" /> |
17 | <include name="ILlsdMethodHandler.cs" /> | ||
18 | <include name="IStreamHandler.cs" /> | 17 | <include name="IStreamHandler.cs" /> |
19 | <include name="LlsdMethod.cs" /> | ||
20 | <include name="RestMethod.cs" /> | 18 | <include name="RestMethod.cs" /> |
21 | <include name="RestMethodEntry.cs" /> | ||
22 | <include name="RestStreamHandler.cs" /> | 19 | <include name="RestStreamHandler.cs" /> |
23 | <include name="UDPServerBase.cs" /> | 20 | <include name="UDPServerBase.cs" /> |
24 | <include name="XmlRpcMethod.cs" /> | 21 | <include name="XmlRpcMethod.cs" /> |
diff --git a/OpenSim/Framework/Servers/RestMethodEntry.cs b/OpenSim/Framework/Servers/RestMethodEntry.cs deleted file mode 100644 index ab926e0..0000000 --- a/OpenSim/Framework/Servers/RestMethodEntry.cs +++ /dev/null | |||
@@ -1,27 +0,0 @@ | |||
1 | using System; | ||
2 | using System.Collections.Generic; | ||
3 | using System.Text; | ||
4 | |||
5 | namespace OpenSim.Framework.Servers | ||
6 | { | ||
7 | public class RestMethodEntry | ||
8 | { | ||
9 | private string m_path; | ||
10 | public string Path | ||
11 | { | ||
12 | get { return m_path; } | ||
13 | } | ||
14 | |||
15 | private RestMethod m_restMethod; | ||
16 | public RestMethod RestMethod | ||
17 | { | ||
18 | get { return m_restMethod; } | ||
19 | } | ||
20 | |||
21 | public RestMethodEntry(string path, RestMethod restMethod) | ||
22 | { | ||
23 | m_path = path; | ||
24 | m_restMethod = restMethod; | ||
25 | } | ||
26 | } | ||
27 | } | ||
diff --git a/OpenSim/Framework/UserManager/LoginResponse.cs b/OpenSim/Framework/UserManager/LoginResponse.cs index 64504fa..abcbd48 100644 --- a/OpenSim/Framework/UserManager/LoginResponse.cs +++ b/OpenSim/Framework/UserManager/LoginResponse.cs | |||
@@ -222,7 +222,9 @@ namespace OpenSim.Framework.UserManagement | |||
222 | 222 | ||
223 | responseData["sim_port"] =(Int32) this.SimPort; | 223 | responseData["sim_port"] =(Int32) this.SimPort; |
224 | responseData["sim_ip"] = this.SimAddress; | 224 | responseData["sim_ip"] = this.SimAddress; |
225 | |||
225 | MainLog.Instance.Warn("SIM IP: " + responseData["sim_ip"] + "; SIM PORT: " + responseData["sim_port"]); | 226 | MainLog.Instance.Warn("SIM IP: " + responseData["sim_ip"] + "; SIM PORT: " + responseData["sim_port"]); |
227 | |||
226 | responseData["agent_id"] = this.AgentID.ToStringHyphenated(); | 228 | responseData["agent_id"] = this.AgentID.ToStringHyphenated(); |
227 | responseData["session_id"] = this.SessionID.ToStringHyphenated(); | 229 | responseData["session_id"] = this.SessionID.ToStringHyphenated(); |
228 | responseData["secure_session_id"] = this.SecureSessionID.ToStringHyphenated(); | 230 | responseData["secure_session_id"] = this.SecureSessionID.ToStringHyphenated(); |
diff --git a/OpenSim/Region/Capabilities/Caps.cs b/OpenSim/Region/Capabilities/Caps.cs index 1d07683..70d601f 100644 --- a/OpenSim/Region/Capabilities/Caps.cs +++ b/OpenSim/Region/Capabilities/Caps.cs | |||
@@ -71,20 +71,33 @@ namespace OpenSim.Region.Capabilities | |||
71 | public void RegisterHandlers() | 71 | public void RegisterHandlers() |
72 | { | 72 | { |
73 | Console.WriteLine("registering CAPS handlers"); | 73 | Console.WriteLine("registering CAPS handlers"); |
74 | string capsBase = "/CAPS/" + m_capsObjectPath; | ||
75 | |||
76 | AddLegacyCapsHandler( httpListener, m_mapLayerPath, MapLayer); | ||
77 | |||
78 | //httpListener.AddStreamHandler( | ||
79 | // new LLSDStreamhandler<LLSDMapRequest, LLSDMapLayerResponse>("POST", capsBase + m_mapLayerPath, this.GetMapLayer )); | ||
74 | 80 | ||
75 | AddCapsHandler( httpListener, m_requestPath, CapsRequest); | 81 | AddLegacyCapsHandler(httpListener, m_requestPath, CapsRequest); |
76 | AddCapsHandler( httpListener, m_mapLayerPath, MapLayer); | 82 | AddLegacyCapsHandler(httpListener, m_newInventory, NewAgentInventory); |
77 | AddCapsHandler( httpListener, m_newInventory, NewAgentInventory); | 83 | AddLegacyCapsHandler( httpListener, eventQueue, ProcessEventQueue); |
78 | AddCapsHandler( httpListener, eventQueue, ProcessEventQueue); | 84 | AddLegacyCapsHandler( httpListener, m_requestTexture, RequestTexture); |
79 | AddCapsHandler( httpListener, m_requestTexture, RequestTexture); | ||
80 | } | 85 | } |
81 | 86 | ||
82 | private void AddCapsHandler( BaseHttpServer httpListener, string path, RestMethod restMethod ) | 87 | public LLSDMapLayerResponse GetMapLayer(LLSDMapRequest mapReq) |
88 | { | ||
89 | LLSDMapLayerResponse mapResponse = new LLSDMapLayerResponse(); | ||
90 | mapResponse.LayerData.Array.Add(this.BuildLLSDMapLayerResponse()); | ||
91 | return mapResponse; | ||
92 | } | ||
93 | |||
94 | [Obsolete("Use BaseHttpServer.AddStreamHandler(new LLSDStreamHandler( LLSDMethod delegate )) instead.")] | ||
95 | private void AddLegacyCapsHandler(BaseHttpServer httpListener, string path, RestMethod restMethod) | ||
83 | { | 96 | { |
84 | string capsBase = "/CAPS/" + m_capsObjectPath; | 97 | string capsBase = "/CAPS/" + m_capsObjectPath; |
85 | httpListener.AddStreamHandler(new RestStreamHandler("POST", capsBase + path, restMethod)); | 98 | httpListener.AddStreamHandler(new RestStreamHandler("POST", capsBase + path, restMethod)); |
86 | } | 99 | } |
87 | 100 | ||
88 | /// <summary> | 101 | /// <summary> |
89 | /// | 102 | /// |
90 | /// </summary> | 103 | /// </summary> |
@@ -125,17 +138,18 @@ namespace OpenSim.Region.Capabilities | |||
125 | public string MapLayer(string request, string path, string param) | 138 | public string MapLayer(string request, string path, string param) |
126 | { | 139 | { |
127 | Encoding _enc = Encoding.UTF8; | 140 | Encoding _enc = Encoding.UTF8; |
128 | Hashtable hash =(Hashtable) LLSD.LLSDDeserialize(_enc.GetBytes(request)); | 141 | Hashtable hash = (Hashtable)LLSD.LLSDDeserialize(_enc.GetBytes(request)); |
129 | LLSDMapRequest mapReq = new LLSDMapRequest(); | 142 | LLSDMapRequest mapReq = new LLSDMapRequest(); |
130 | LLSDHelpers.DeserialiseLLSDMap(hash, mapReq ); | 143 | LLSDHelpers.DeserialiseLLSDMap(hash, mapReq); |
131 | 144 | ||
132 | LLSDMapLayerResponse mapResponse= new LLSDMapLayerResponse(); | 145 | LLSDMapLayerResponse mapResponse = new LLSDMapLayerResponse(); |
133 | mapResponse.LayerData.Array.Add(this.BuildLLSDMapLayerResponse()); | 146 | mapResponse.LayerData.Array.Add(this.BuildLLSDMapLayerResponse()); |
134 | string res = LLSDHelpers.SerialiseLLSDReply(mapResponse); | 147 | string res = LLSDHelpers.SerialiseLLSDReply(mapResponse); |
135 | 148 | ||
136 | return res; | 149 | return res; |
137 | } | 150 | } |
138 | 151 | ||
152 | |||
139 | /// <summary> | 153 | /// <summary> |
140 | /// | 154 | /// |
141 | /// </summary> | 155 | /// </summary> |
@@ -214,7 +228,7 @@ namespace OpenSim.Region.Capabilities | |||
214 | string uploaderPath = Util.RandomClass.Next(5000, 8000).ToString("0000"); | 228 | string uploaderPath = Util.RandomClass.Next(5000, 8000).ToString("0000"); |
215 | AssetUploader uploader = new AssetUploader(newAsset, newInvItem, uploaderPath, this.httpListener); | 229 | AssetUploader uploader = new AssetUploader(newAsset, newInvItem, uploaderPath, this.httpListener); |
216 | 230 | ||
217 | AddCapsHandler( httpListener, uploaderPath, uploader.uploaderCaps); | 231 | AddLegacyCapsHandler( httpListener, uploaderPath, uploader.uploaderCaps); |
218 | 232 | ||
219 | string uploaderURL = "http://" + m_httpListenerHostName + ":" + m_httpListenPort.ToString() + "/CAPS/" + uploaderPath; | 233 | string uploaderURL = "http://" + m_httpListenerHostName + ":" + m_httpListenPort.ToString() + "/CAPS/" + uploaderPath; |
220 | //Console.WriteLine("uploader url is " + uploaderURL); | 234 | //Console.WriteLine("uploader url is " + uploaderURL); |
diff --git a/OpenSim/Region/Capabilities/LLSDMethod.cs b/OpenSim/Region/Capabilities/LLSDMethod.cs new file mode 100644 index 0000000..5f42f44 --- /dev/null +++ b/OpenSim/Region/Capabilities/LLSDMethod.cs | |||
@@ -0,0 +1,8 @@ | |||
1 | using System; | ||
2 | using System.Collections.Generic; | ||
3 | using System.Text; | ||
4 | |||
5 | namespace OpenSim.Region.Capabilities | ||
6 | { | ||
7 | public delegate TResponse LLSDMethod<TRequest, TResponse>(TRequest request); | ||
8 | } | ||
diff --git a/OpenSim/Region/Capabilities/LLSDStreamHandler.cs b/OpenSim/Region/Capabilities/LLSDStreamHandler.cs new file mode 100644 index 0000000..ff63353 --- /dev/null +++ b/OpenSim/Region/Capabilities/LLSDStreamHandler.cs | |||
@@ -0,0 +1,40 @@ | |||
1 | using System; | ||
2 | using System.Collections.Generic; | ||
3 | using System.Text; | ||
4 | using OpenSim.Framework.Servers; | ||
5 | using System.IO; | ||
6 | using System.Collections; | ||
7 | using libsecondlife; | ||
8 | |||
9 | namespace OpenSim.Region.Capabilities | ||
10 | { | ||
11 | public class LLSDStreamhandler<TRequest, TResponse> : BaseStreamHandler | ||
12 | where TRequest : new() | ||
13 | { | ||
14 | private LLSDMethod<TRequest, TResponse> m_method; | ||
15 | |||
16 | public LLSDStreamhandler(string httpMethod, string path, LLSDMethod<TRequest, TResponse> method) | ||
17 | : base(httpMethod, path) | ||
18 | { | ||
19 | m_method = method; | ||
20 | } | ||
21 | |||
22 | public override byte[] Handle(string path, Stream request) | ||
23 | { | ||
24 | Encoding encoding = Encoding.UTF8; | ||
25 | StreamReader streamReader = new StreamReader(request, encoding); | ||
26 | |||
27 | string requestBody = streamReader.ReadToEnd(); | ||
28 | streamReader.Close(); | ||
29 | |||
30 | Hashtable hash = (Hashtable)LLSD.LLSDDeserialize(encoding.GetBytes(requestBody)); | ||
31 | TRequest llsdRequest = new TRequest(); | ||
32 | LLSDHelpers.DeserialiseLLSDMap(hash, llsdRequest); | ||
33 | |||
34 | TResponse response = m_method(llsdRequest); | ||
35 | |||
36 | return encoding.GetBytes( LLSDHelpers.SerialiseLLSDReply(response) ); | ||
37 | |||
38 | } | ||
39 | } | ||
40 | } | ||
diff --git a/OpenSim/Region/Capabilities/OpenSim.Region.Capabilities.csproj b/OpenSim/Region/Capabilities/OpenSim.Region.Capabilities.csproj index 4667d52..4b672ae 100644 --- a/OpenSim/Region/Capabilities/OpenSim.Region.Capabilities.csproj +++ b/OpenSim/Region/Capabilities/OpenSim.Region.Capabilities.csproj | |||
@@ -123,6 +123,12 @@ | |||
123 | <Compile Include="LLSDMapRequest.cs"> | 123 | <Compile Include="LLSDMapRequest.cs"> |
124 | <SubType>Code</SubType> | 124 | <SubType>Code</SubType> |
125 | </Compile> | 125 | </Compile> |
126 | <Compile Include="LLSDMethod.cs"> | ||
127 | <SubType>Code</SubType> | ||
128 | </Compile> | ||
129 | <Compile Include="LLSDStreamHandler.cs"> | ||
130 | <SubType>Code</SubType> | ||
131 | </Compile> | ||
126 | <Compile Include="LLSDTest.cs"> | 132 | <Compile Include="LLSDTest.cs"> |
127 | <SubType>Code</SubType> | 133 | <SubType>Code</SubType> |
128 | </Compile> | 134 | </Compile> |
diff --git a/OpenSim/Region/Capabilities/OpenSim.Region.Capabilities.dll.build b/OpenSim/Region/Capabilities/OpenSim.Region.Capabilities.dll.build index a091b5c..1d552c2 100644 --- a/OpenSim/Region/Capabilities/OpenSim.Region.Capabilities.dll.build +++ b/OpenSim/Region/Capabilities/OpenSim.Region.Capabilities.dll.build | |||
@@ -20,6 +20,8 @@ | |||
20 | <include name="LLSDMapLayer.cs" /> | 20 | <include name="LLSDMapLayer.cs" /> |
21 | <include name="LLSDMapLayerResponse.cs" /> | 21 | <include name="LLSDMapLayerResponse.cs" /> |
22 | <include name="LLSDMapRequest.cs" /> | 22 | <include name="LLSDMapRequest.cs" /> |
23 | <include name="LLSDMethod.cs" /> | ||
24 | <include name="LLSDStreamHandler.cs" /> | ||
23 | <include name="LLSDTest.cs" /> | 25 | <include name="LLSDTest.cs" /> |
24 | <include name="LLSDType.cs" /> | 26 | <include name="LLSDType.cs" /> |
25 | <include name="LLSDUploadReply.cs" /> | 27 | <include name="LLSDUploadReply.cs" /> |
diff --git a/OpenSim/Region/Examples/SimpleApp/LlsdMethodEntry.cs b/OpenSim/Region/Examples/SimpleApp/LlsdMethodEntry.cs index f946482..d0ef2af 100644 --- a/OpenSim/Region/Examples/SimpleApp/LlsdMethodEntry.cs +++ b/OpenSim/Region/Examples/SimpleApp/LlsdMethodEntry.cs | |||
@@ -2,40 +2,9 @@ using System.Collections; | |||
2 | using System.Text; | 2 | using System.Text; |
3 | using libsecondlife; | 3 | using libsecondlife; |
4 | using OpenSim.Region.Capabilities; | 4 | using OpenSim.Region.Capabilities; |
5 | using System.IO; | ||
5 | 6 | ||
6 | namespace OpenSim.Framework.Servers | 7 | namespace OpenSim.Framework.Servers |
7 | { | 8 | { |
8 | public class LlsdMethodEntry<TResponse, TRequest> : ILlsdMethodHandler | 9 | |
9 | where TRequest : new() | ||
10 | { | ||
11 | private LlsdMethod<TResponse, TRequest> m_method; | ||
12 | |||
13 | |||
14 | public LlsdMethodEntry( ) | ||
15 | { | ||
16 | |||
17 | } | ||
18 | |||
19 | public LlsdMethodEntry(LlsdMethod<TResponse, TRequest> method) | ||
20 | { | ||
21 | m_method = method; | ||
22 | } | ||
23 | |||
24 | #region ILlsdMethodHandler Members | ||
25 | |||
26 | public string Handle(string body, string path) | ||
27 | { | ||
28 | Encoding _enc = Encoding.UTF8; | ||
29 | Hashtable hash = (Hashtable)LLSD.LLSDDeserialize(_enc.GetBytes( body )); | ||
30 | TRequest request = new TRequest(); | ||
31 | |||
32 | LLSDHelpers.DeserialiseLLSDMap(hash, request ); | ||
33 | |||
34 | TResponse response = m_method(request); | ||
35 | |||
36 | return LLSDHelpers.SerialiseLLSDReply( response ); | ||
37 | } | ||
38 | |||
39 | #endregion | ||
40 | } | ||
41 | } | 10 | } |
diff --git a/OpenSim/Region/Examples/SimpleApp/Program.cs b/OpenSim/Region/Examples/SimpleApp/Program.cs index bc84c35..ad70df8 100644 --- a/OpenSim/Region/Examples/SimpleApp/Program.cs +++ b/OpenSim/Region/Examples/SimpleApp/Program.cs | |||
@@ -60,8 +60,6 @@ namespace SimpleApp | |||
60 | 60 | ||
61 | httpServer.AddXmlRPCHandler("login_to_simulator", communicationsManager.UserServices.XmlRpcLoginMethod ); | 61 | httpServer.AddXmlRPCHandler("login_to_simulator", communicationsManager.UserServices.XmlRpcLoginMethod ); |
62 | 62 | ||
63 | RegisterLlsdHandler<LLSDMapLayerResponse, LLSDMapRequest>("/Caps/test/", LlsdMethodDemo); | ||
64 | |||
65 | httpServer.Start(); | 63 | httpServer.Start(); |
66 | 64 | ||
67 | m_log.WriteLine( LogPriority.NORMAL, "Press enter to quit."); | 65 | m_log.WriteLine( LogPriority.NORMAL, "Press enter to quit."); |
@@ -74,27 +72,6 @@ namespace SimpleApp | |||
74 | 72 | ||
75 | } | 73 | } |
76 | 74 | ||
77 | private LLSDMapLayerResponse LlsdMethodDemo(LLSDMapRequest request) | ||
78 | { | ||
79 | return new LLSDMapLayerResponse(); | ||
80 | } | ||
81 | |||
82 | ILlsdMethodHandler m_handler; | ||
83 | |||
84 | private void RegisterLlsdHandler<TResponse, TRequest>( string path, LlsdMethod<TResponse, TRequest> method ) | ||
85 | where TRequest : new() | ||
86 | { | ||
87 | // path should be handler key, but for now just conceptually store it. | ||
88 | m_handler = new LlsdMethodEntry<TResponse, TRequest>( method ); | ||
89 | } | ||
90 | |||
91 | private string ProcessLlsdMethod( string request,string path ) | ||
92 | { | ||
93 | LlsdMethodEntry<LLSDMapLayerResponse, LLSDMapRequest> concreteHandler = new LlsdMethodEntry<LLSDMapLayerResponse, LLSDMapRequest>( LlsdMethodDemo ); | ||
94 | |||
95 | return m_handler.Handle(request, path); | ||
96 | } | ||
97 | |||
98 | private bool AddNewSessionHandler(ulong regionHandle, Login loginData) | 75 | private bool AddNewSessionHandler(ulong regionHandle, Login loginData) |
99 | { | 76 | { |
100 | m_log.WriteLine(LogPriority.NORMAL, "Region [{0}] recieved Login from [{1}] [{2}]", regionHandle, loginData.First, loginData.Last); | 77 | m_log.WriteLine(LogPriority.NORMAL, "Region [{0}] recieved Login from [{1}] [{2}]", regionHandle, loginData.First, loginData.Last); |