diff options
Diffstat (limited to 'OpenSim')
21 files changed, 1941 insertions, 1800 deletions
diff --git a/OpenSim/Data/SQLite/Resources/016_RegionStore.sql b/OpenSim/Data/SQLite/Resources/016_RegionStore.sql index 71be55b..52f160c 100644 --- a/OpenSim/Data/SQLite/Resources/016_RegionStore.sql +++ b/OpenSim/Data/SQLite/Resources/016_RegionStore.sql | |||
@@ -1,5 +1,5 @@ | |||
1 | BEGIN; | 1 | BEGIN; |
2 | 2 | ||
3 | ALTER TABLE prims ADD COLUMN VolumeDetect INTEGER NOT NULL DEFAULT 0; | 3 | ALTER TABLE prims ADD COLUMN VolumeDetect INTEGER NOT NULL DEFAULT 0; |
4 | 4 | ||
5 | COMMIT; | 5 | COMMIT; |
diff --git a/OpenSim/Framework/OpenJpeg/bio.cs b/OpenSim/Framework/OpenJpeg/bio.cs index 4f095ad..4a5b321 100644 --- a/OpenSim/Framework/OpenJpeg/bio.cs +++ b/OpenSim/Framework/OpenJpeg/bio.cs | |||
@@ -1,138 +1,162 @@ | |||
1 | using System; | 1 | /* |
2 | using System.Collections.Generic; | 2 | * Copyright (c) Contributors, http://opensimulator.org/ |
3 | using System.Text; | 3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. |
4 | 4 | * | |
5 | namespace OpenSim.Framework.OpenJpeg | 5 | * Redistribution and use in source and binary forms, with or without |
6 | { | 6 | * modification, are permitted provided that the following conditions are met: |
7 | public static class bio | 7 | * * Redistributions of source code must retain the above copyright |
8 | { | 8 | * notice, this list of conditions and the following disclaimer. |
9 | 9 | * * Redistributions in binary form must reproduce the above copyright | |
10 | public static opj_bio bio_create() | 10 | * notice, this list of conditions and the following disclaimer in the |
11 | { | 11 | * documentation and/or other materials provided with the distribution. |
12 | opj_bio bio = new opj_bio(); | 12 | * * Neither the name of the OpenSimulator Project nor the |
13 | return bio; | 13 | * names of its contributors may be used to endorse or promote products |
14 | } | 14 | * derived from this software without specific prior written permission. |
15 | 15 | * | |
16 | public static void bio_destroy(opj_bio bio) | 16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY |
17 | { | 17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
18 | // not needed on C# | 18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
19 | } | 19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY |
20 | 20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | |
21 | public static int bio_numbytes(opj_bio bio) | 21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
22 | { | 22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND |
23 | return (bio.bp - bio.start); | 23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
24 | } | 24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
25 | 25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |
26 | public static void bio_init_enc(opj_bio bio, sbyte bp, int len) | 26 | */ |
27 | { | 27 | |
28 | bio.start = (byte)bp; | 28 | using System; |
29 | bio.end = (byte)(bp + (byte)len); | 29 | using System.Collections.Generic; |
30 | bio.bp = (byte)bp; | 30 | using System.Text; |
31 | bio.buf = 0; | 31 | |
32 | bio.ct = 8; | 32 | namespace OpenSim.Framework.OpenJpeg |
33 | } | 33 | { |
34 | 34 | public static class bio | |
35 | public static void bio_init_dec(opj_bio bio, sbyte bp, int len) | 35 | { |
36 | { | 36 | public static opj_bio bio_create() |
37 | bio.start = (byte)bp; | 37 | { |
38 | bio.end = (byte)(bp + len); | 38 | opj_bio bio = new opj_bio(); |
39 | bio.bp = (byte)bp; | 39 | return bio; |
40 | bio.buf = 0; | 40 | } |
41 | bio.ct = 0; | 41 | |
42 | } | 42 | public static void bio_destroy(opj_bio bio) |
43 | 43 | { | |
44 | public static void bio_write(opj_bio bio, int v, int n) | 44 | // not needed on C# |
45 | { | 45 | } |
46 | for (int i = n - 1; i >= 0; i--) | 46 | |
47 | bio_putbit(bio, (v >> i) & 1); | 47 | public static int bio_numbytes(opj_bio bio) |
48 | } | 48 | { |
49 | 49 | return (bio.bp - bio.start); | |
50 | public static int bio_read(opj_bio bio, int n) | 50 | } |
51 | { | 51 | |
52 | int v = 0; | 52 | public static void bio_init_enc(opj_bio bio, sbyte bp, int len) |
53 | for (int i = n - 1; i >= 0; i--) | 53 | { |
54 | v += bio_getbit(bio) << i; | 54 | bio.start = (byte)bp; |
55 | 55 | bio.end = (byte)(bp + (byte)len); | |
56 | return v; | 56 | bio.bp = (byte)bp; |
57 | } | 57 | bio.buf = 0; |
58 | 58 | bio.ct = 8; | |
59 | public static int bio_flush(opj_bio bio) | 59 | } |
60 | { | 60 | |
61 | bio.ct = 0; | 61 | public static void bio_init_dec(opj_bio bio, sbyte bp, int len) |
62 | if (bio_byteout(bio) != 0) | 62 | { |
63 | return 1; | 63 | bio.start = (byte)bp; |
64 | 64 | bio.end = (byte)(bp + len); | |
65 | if (bio.ct == 7) | 65 | bio.bp = (byte)bp; |
66 | { | 66 | bio.buf = 0; |
67 | bio.ct = 0; | 67 | bio.ct = 0; |
68 | if (bio_byteout(bio) != 0) | 68 | } |
69 | return 1; | 69 | |
70 | } | 70 | public static void bio_write(opj_bio bio, int v, int n) |
71 | return 0; | 71 | { |
72 | } | 72 | for (int i = n - 1; i >= 0; i--) |
73 | 73 | bio_putbit(bio, (v >> i) & 1); | |
74 | public static int bio_inalign(opj_bio bio) | 74 | } |
75 | { | 75 | |
76 | bio.ct = 0; | 76 | public static int bio_read(opj_bio bio, int n) |
77 | if ((bio.buf & 0xff) == 0xff) | 77 | { |
78 | { | 78 | int v = 0; |
79 | if (bio_bytein(bio) != 0) | 79 | for (int i = n - 1; i >= 0; i--) |
80 | return 1; | 80 | v += bio_getbit(bio) << i; |
81 | bio.ct = 0; | 81 | |
82 | } | 82 | return v; |
83 | return 0; | 83 | } |
84 | } | 84 | |
85 | 85 | public static int bio_flush(opj_bio bio) | |
86 | private static int bio_bytein(opj_bio bio) | 86 | { |
87 | { | 87 | bio.ct = 0; |
88 | bio.buf = (bio.buf << 8) & 0xffff; | 88 | if (bio_byteout(bio) != 0) |
89 | bio.ct = bio.buf == 0xff00 ? 7 : 8; | 89 | return 1; |
90 | if (bio.bp >= bio.end) | 90 | |
91 | return 1; | 91 | if (bio.ct == 7) |
92 | bio.buf |= bio.bp++; | 92 | { |
93 | 93 | bio.ct = 0; | |
94 | return 0; | 94 | if (bio_byteout(bio) != 0) |
95 | } | 95 | return 1; |
96 | 96 | } | |
97 | private static int bio_byteout(opj_bio bio) | 97 | return 0; |
98 | { | 98 | } |
99 | bio.buf = (bio.buf << 8) & 0xffff; | 99 | |
100 | bio.ct = bio.buf == 0xff00 ? 7 : 8; | 100 | public static int bio_inalign(opj_bio bio) |
101 | if (bio.bp >= bio.end) | 101 | { |
102 | return 1; | 102 | bio.ct = 0; |
103 | 103 | if ((bio.buf & 0xff) == 0xff) | |
104 | bio.bp = (byte)(bio.buf >> 8); | 104 | { |
105 | bio.bp++; | 105 | if (bio_bytein(bio) != 0) |
106 | return 0; | 106 | return 1; |
107 | } | 107 | bio.ct = 0; |
108 | 108 | } | |
109 | private static void bio_putbit(opj_bio bio, int b) | 109 | return 0; |
110 | { | 110 | } |
111 | if (bio.ct == 0) | 111 | |
112 | bio_byteout(bio); | 112 | private static int bio_bytein(opj_bio bio) |
113 | 113 | { | |
114 | bio.ct--; | 114 | bio.buf = (bio.buf << 8) & 0xffff; |
115 | bio.buf |= (byte)(b << bio.ct); | 115 | bio.ct = bio.buf == 0xff00 ? 7 : 8; |
116 | 116 | if (bio.bp >= bio.end) | |
117 | } | 117 | return 1; |
118 | 118 | bio.buf |= bio.bp++; | |
119 | private static int bio_getbit(opj_bio bio) | 119 | |
120 | { | 120 | return 0; |
121 | if (bio.ct == 0) | 121 | } |
122 | bio_bytein(bio); | 122 | |
123 | bio.ct--; | 123 | private static int bio_byteout(opj_bio bio) |
124 | 124 | { | |
125 | return (int)((bio.buf >> bio.ct) & 1); | 125 | bio.buf = (bio.buf << 8) & 0xffff; |
126 | } | 126 | bio.ct = bio.buf == 0xff00 ? 7 : 8; |
127 | 127 | if (bio.bp >= bio.end) | |
128 | } | 128 | return 1; |
129 | 129 | ||
130 | public struct opj_bio | 130 | bio.bp = (byte)(bio.buf >> 8); |
131 | { | 131 | bio.bp++; |
132 | public byte start; | 132 | return 0; |
133 | public byte end; | 133 | } |
134 | public byte bp; | 134 | |
135 | public uint buf; | 135 | private static void bio_putbit(opj_bio bio, int b) |
136 | public int ct; | 136 | { |
137 | } | 137 | if (bio.ct == 0) |
138 | } | 138 | bio_byteout(bio); |
139 | |||
140 | bio.ct--; | ||
141 | bio.buf |= (byte)(b << bio.ct); | ||
142 | } | ||
143 | |||
144 | private static int bio_getbit(opj_bio bio) | ||
145 | { | ||
146 | if (bio.ct == 0) | ||
147 | bio_bytein(bio); | ||
148 | bio.ct--; | ||
149 | |||
150 | return (int)((bio.buf >> bio.ct) & 1); | ||
151 | } | ||
152 | } | ||
153 | |||
154 | public struct opj_bio | ||
155 | { | ||
156 | public byte start; | ||
157 | public byte end; | ||
158 | public byte bp; | ||
159 | public uint buf; | ||
160 | public int ct; | ||
161 | } | ||
162 | } | ||
diff --git a/OpenSim/Framework/OpenJpeg/fix.cs b/OpenSim/Framework/OpenJpeg/fix.cs index 76d3159..9de0041 100644 --- a/OpenSim/Framework/OpenJpeg/fix.cs +++ b/OpenSim/Framework/OpenJpeg/fix.cs | |||
@@ -1,16 +1,43 @@ | |||
1 | using System; | 1 | /* |
2 | using System.Collections.Generic; | 2 | * Copyright (c) Contributors, http://opensimulator.org/ |
3 | using System.Text; | 3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. |
4 | 4 | * | |
5 | namespace OpenSim.Framework.OpenJpeg | 5 | * Redistribution and use in source and binary forms, with or without |
6 | { | 6 | * modification, are permitted provided that the following conditions are met: |
7 | public static class fix | 7 | * * Redistributions of source code must retain the above copyright |
8 | { | 8 | * notice, this list of conditions and the following disclaimer. |
9 | public static int fix_mul(int a, int b) | 9 | * * Redistributions in binary form must reproduce the above copyright |
10 | { | 10 | * notice, this list of conditions and the following disclaimer in the |
11 | long temp = (long)a * (long)b; | 11 | * documentation and/or other materials provided with the distribution. |
12 | temp += temp & 4096; | 12 | * * Neither the name of the OpenSimulator Project nor the |
13 | return (int)(temp >> 13); | 13 | * names of its contributors may be used to endorse or promote products |
14 | } | 14 | * derived from this software without specific prior written permission. |
15 | } | 15 | * |
16 | } | 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 | using System; | ||
29 | using System.Collections.Generic; | ||
30 | using System.Text; | ||
31 | |||
32 | namespace OpenSim.Framework.OpenJpeg | ||
33 | { | ||
34 | public static class fix | ||
35 | { | ||
36 | public static int fix_mul(int a, int b) | ||
37 | { | ||
38 | long temp = (long)a * (long)b; | ||
39 | temp += temp & 4096; | ||
40 | return (int)(temp >> 13); | ||
41 | } | ||
42 | } | ||
43 | } | ||
diff --git a/OpenSim/Framework/OpenJpeg/int_.cs b/OpenSim/Framework/OpenJpeg/int_.cs index dc71728..07321b5 100644 --- a/OpenSim/Framework/OpenJpeg/int_.cs +++ b/OpenSim/Framework/OpenJpeg/int_.cs | |||
@@ -1,58 +1,84 @@ | |||
1 | using System; | 1 | /* |
2 | using System.Collections.Generic; | 2 | * Copyright (c) Contributors, http://opensimulator.org/ |
3 | using System.Text; | 3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. |
4 | 4 | * | |
5 | namespace OpenSim.Framework.OpenJpeg | 5 | * Redistribution and use in source and binary forms, with or without |
6 | { | 6 | * modification, are permitted provided that the following conditions are met: |
7 | public static class int_ | 7 | * * Redistributions of source code must retain the above copyright |
8 | { | 8 | * notice, this list of conditions and the following disclaimer. |
9 | public static int int_min(int a, int b) | 9 | * * Redistributions in binary form must reproduce the above copyright |
10 | { | 10 | * notice, this list of conditions and the following disclaimer in the |
11 | return a < b ? a : b; | 11 | * documentation and/or other materials provided with the distribution. |
12 | } | 12 | * * Neither the name of the OpenSimulator Project nor the |
13 | 13 | * names of its contributors may be used to endorse or promote products | |
14 | public static int int_max(int a, int b) | 14 | * derived from this software without specific prior written permission. |
15 | { | 15 | * |
16 | return (a > b) ? a : b; | 16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY |
17 | } | 17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
18 | 18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | |
19 | public static int int_clamp(int a, int min, int max) | 19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY |
20 | { | 20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES |
21 | if (a < min) | 21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
22 | return min; | 22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND |
23 | if (a > max) | 23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
24 | return max; | 24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
25 | 25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |
26 | return a; | 26 | */ |
27 | } | 27 | |
28 | 28 | using System; | |
29 | public static int int_abs(int a) | 29 | using System.Collections.Generic; |
30 | { | 30 | using System.Text; |
31 | return a < 0 ? -a : a; | 31 | |
32 | } | 32 | namespace OpenSim.Framework.OpenJpeg |
33 | 33 | { | |
34 | public static int int_ceildiv(int a, int b) | 34 | public static class int_ |
35 | { | 35 | { |
36 | return (a + b - 1) / b; | 36 | public static int int_min(int a, int b) |
37 | } | 37 | { |
38 | 38 | return a < b ? a : b; | |
39 | public static int int_ceildivpow2(int a, int b) | 39 | } |
40 | { | 40 | |
41 | return (a + (1 << b) - 1) >> b; | 41 | public static int int_max(int a, int b) |
42 | } | 42 | { |
43 | 43 | return (a > b) ? a : b; | |
44 | public static int int_floordivpow2(int a, int b) | 44 | } |
45 | { | 45 | |
46 | return a >> b; | 46 | public static int int_clamp(int a, int min, int max) |
47 | } | 47 | { |
48 | 48 | if (a < min) | |
49 | public static int int_floorlog2(int a) | 49 | return min; |
50 | { | 50 | if (a > max) |
51 | for (int l=0; a > 1; l++) | 51 | return max; |
52 | a >>= 1; | 52 | |
53 | 53 | return a; | |
54 | return 1; | 54 | } |
55 | } | 55 | |
56 | 56 | public static int int_abs(int a) | |
57 | } | 57 | { |
58 | } | 58 | return a < 0 ? -a : a; |
59 | } | ||
60 | |||
61 | public static int int_ceildiv(int a, int b) | ||
62 | { | ||
63 | return (a + b - 1) / b; | ||
64 | } | ||
65 | |||
66 | public static int int_ceildivpow2(int a, int b) | ||
67 | { | ||
68 | return (a + (1 << b) - 1) >> b; | ||
69 | } | ||
70 | |||
71 | public static int int_floordivpow2(int a, int b) | ||
72 | { | ||
73 | return a >> b; | ||
74 | } | ||
75 | |||
76 | public static int int_floorlog2(int a) | ||
77 | { | ||
78 | for (int l=0; a > 1; l++) | ||
79 | a >>= 1; | ||
80 | |||
81 | return 1; | ||
82 | } | ||
83 | } | ||
84 | } | ||
diff --git a/OpenSim/Framework/OpenJpeg/j2k.cs b/OpenSim/Framework/OpenJpeg/j2k.cs index f655364..8751792 100644 --- a/OpenSim/Framework/OpenJpeg/j2k.cs +++ b/OpenSim/Framework/OpenJpeg/j2k.cs | |||
@@ -1,125 +1,149 @@ | |||
1 | using System; | 1 | /* |
2 | using System.Collections.Generic; | 2 | * Copyright (c) Contributors, http://opensimulator.org/ |
3 | using System.Text; | 3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. |
4 | 4 | * | |
5 | namespace OpenSim.Framework.OpenJpeg | 5 | * Redistribution and use in source and binary forms, with or without |
6 | { | 6 | * modification, are permitted provided that the following conditions are met: |
7 | 7 | * * Redistributions of source code must retain the above copyright | |
8 | public static class j2k | 8 | * notice, this list of conditions and the following disclaimer. |
9 | { | 9 | * * Redistributions in binary form must reproduce the above copyright |
10 | } | 10 | * notice, this list of conditions and the following disclaimer in the |
11 | 11 | * documentation and/or other materials provided with the distribution. | |
12 | public enum J2K_STATUS | 12 | * * Neither the name of the OpenSimulator Project nor the |
13 | { | 13 | * names of its contributors may be used to endorse or promote products |
14 | J2K_STATE_MHSOC = 0x0001, /**< a SOC marker is expected */ | 14 | * derived from this software without specific prior written permission. |
15 | J2K_STATE_MHSIZ = 0x0002, /**< a SIZ marker is expected */ | 15 | * |
16 | J2K_STATE_MH = 0x0004, /**< the decoding process is in the main header */ | 16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY |
17 | J2K_STATE_TPHSOT = 0x0008, /**< the decoding process is in a tile part header and expects a SOT marker */ | 17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
18 | J2K_STATE_TPH = 0x0010, /**< the decoding process is in a tile part header */ | 18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
19 | J2K_STATE_MT = 0x0020, /**< the EOC marker has just been read */ | 19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY |
20 | J2K_STATE_NEOC = 0x0040, /**< the decoding process must not expect a EOC marker because the codestream is truncated */ | 20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES |
21 | J2K_STATE_ERR = 0x0080 /**< the decoding process has encountered an error */ | 21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
22 | } | 22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND |
23 | 23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | |
24 | public enum J2K_T2_MODE | 24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
25 | { | 25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
26 | THRESH_CALC = 0, /** Function called in Rate allocation process*/ | 26 | */ |
27 | FINAL_PASS = 1 /** Function called in Tier 2 process*/ | 27 | |
28 | } | 28 | using System; |
29 | 29 | using System.Collections.Generic; | |
30 | public struct opj_stepsize | 30 | using System.Text; |
31 | { | 31 | |
32 | public int expn; | 32 | namespace OpenSim.Framework.OpenJpeg |
33 | public int mant; | 33 | { |
34 | } | 34 | public static class j2k |
35 | 35 | { | |
36 | public struct opj_tccp | 36 | } |
37 | { | 37 | |
38 | public int csty; | 38 | public enum J2K_STATUS |
39 | public int numresolutions; | 39 | { |
40 | public int cblkw; | 40 | J2K_STATE_MHSOC = 0x0001, /**< a SOC marker is expected */ |
41 | public int cblkh; | 41 | J2K_STATE_MHSIZ = 0x0002, /**< a SIZ marker is expected */ |
42 | public int cblksty; | 42 | J2K_STATE_MH = 0x0004, /**< the decoding process is in the main header */ |
43 | public int qmfbid; | 43 | J2K_STATE_TPHSOT = 0x0008, /**< the decoding process is in a tile part header and expects a SOT marker */ |
44 | public int qntsty; | 44 | J2K_STATE_TPH = 0x0010, /**< the decoding process is in a tile part header */ |
45 | /// <summary> | 45 | J2K_STATE_MT = 0x0020, /**< the EOC marker has just been read */ |
46 | /// don't forget to initialize 97 elements | 46 | J2K_STATE_NEOC = 0x0040, /**< the decoding process must not expect a EOC marker because the codestream is truncated */ |
47 | /// </summary> | 47 | J2K_STATE_ERR = 0x0080 /**< the decoding process has encountered an error */ |
48 | public opj_stepsize[] stepsizes; | 48 | } |
49 | public int numgbits; | 49 | |
50 | public int roishift; | 50 | public enum J2K_T2_MODE |
51 | /// <summary> | 51 | { |
52 | /// Don't forget to initialize 33 elements | 52 | THRESH_CALC = 0, /** Function called in Rate allocation process*/ |
53 | /// </summary> | 53 | FINAL_PASS = 1 /** Function called in Tier 2 process*/ |
54 | public int[] prcw; | 54 | } |
55 | 55 | ||
56 | } | 56 | public struct opj_stepsize |
57 | 57 | { | |
58 | public struct opj_tcp | 58 | public int expn; |
59 | { | 59 | public int mant; |
60 | public int first; | 60 | } |
61 | public int csty; | 61 | |
62 | public PROG_ORDER prg; | 62 | public struct opj_tccp |
63 | public int numlayers; | 63 | { |
64 | public int mct; | 64 | public int csty; |
65 | /// <summary> | 65 | public int numresolutions; |
66 | /// don't forget to initialize to 100 | 66 | public int cblkw; |
67 | /// </summary> | 67 | public int cblkh; |
68 | public float[] rates; | 68 | public int cblksty; |
69 | public int numpocs; | 69 | public int qmfbid; |
70 | public int POC; | 70 | public int qntsty; |
71 | /// <summary> | 71 | /// <summary> |
72 | /// Don't forget to initialize to 32 | 72 | /// don't forget to initialize 97 elements |
73 | /// </summary> | 73 | /// </summary> |
74 | public opj_poc[] pocs; | 74 | public opj_stepsize[] stepsizes; |
75 | public byte ppt_data; | 75 | public int numgbits; |
76 | public byte ppt_data_first; | 76 | public int roishift; |
77 | public int ppt; | 77 | /// <summary> |
78 | public int ppt_store; | 78 | /// Don't forget to initialize 33 elements |
79 | public int ppt_len; | 79 | /// </summary> |
80 | /// <summary> | 80 | public int[] prcw; |
81 | /// Don't forget to initialize 100 elements | 81 | } |
82 | /// </summary> | 82 | |
83 | public float[] distoratio; | 83 | public struct opj_tcp |
84 | public opj_tccp tccps; | 84 | { |
85 | 85 | public int first; | |
86 | } | 86 | public int csty; |
87 | 87 | public PROG_ORDER prg; | |
88 | public struct opj_cp | 88 | public int numlayers; |
89 | { | 89 | public int mct; |
90 | public CINEMA_MODE cinema; | 90 | /// <summary> |
91 | public int max_comp_size; | 91 | /// don't forget to initialize to 100 |
92 | public int img_size; | 92 | /// </summary> |
93 | public RSIZ_CAPABILITIES rsiz; | 93 | public float[] rates; |
94 | public sbyte tp_on; | 94 | public int numpocs; |
95 | public sbyte tp_flag; | 95 | public int POC; |
96 | public int tp_pos; | 96 | /// <summary> |
97 | public int distro_alloc; | 97 | /// Don't forget to initialize to 32 |
98 | public int fixed_alloc; | 98 | /// </summary> |
99 | public int fixed_quality; | 99 | public opj_poc[] pocs; |
100 | public int reduce; | 100 | public byte ppt_data; |
101 | public int layer; | 101 | public byte ppt_data_first; |
102 | public LIMIT_DECODING limit_decoding; | 102 | public int ppt; |
103 | public int tx0; | 103 | public int ppt_store; |
104 | public int ty0; | 104 | public int ppt_len; |
105 | public int tdx; | 105 | /// <summary> |
106 | public int tdy; | 106 | /// Don't forget to initialize 100 elements |
107 | public sbyte? comment; | 107 | /// </summary> |
108 | public int tw; | 108 | public float[] distoratio; |
109 | public int th; | 109 | public opj_tccp tccps; |
110 | public int? tileno; | 110 | } |
111 | public byte ppm_data; | 111 | |
112 | public byte ppm_data_first; | 112 | public struct opj_cp |
113 | public int ppm; | 113 | { |
114 | public int ppm_store; | 114 | public CINEMA_MODE cinema; |
115 | public int ppm_previous; | 115 | public int max_comp_size; |
116 | public int ppm_len; | 116 | public int img_size; |
117 | public opj_tcp tcps; | 117 | public RSIZ_CAPABILITIES rsiz; |
118 | public int matrice; | 118 | public sbyte tp_on; |
119 | } | 119 | public sbyte tp_flag; |
120 | 120 | public int tp_pos; | |
121 | public static class j2kdefines | 121 | public int distro_alloc; |
122 | { | 122 | public int fixed_alloc; |
123 | public int fixed_quality; | ||
124 | public int reduce; | ||
125 | public int layer; | ||
126 | public LIMIT_DECODING limit_decoding; | ||
127 | public int tx0; | ||
128 | public int ty0; | ||
129 | public int tdx; | ||
130 | public int tdy; | ||
131 | public sbyte? comment; | ||
132 | public int tw; | ||
133 | public int th; | ||
134 | public int? tileno; | ||
135 | public byte ppm_data; | ||
136 | public byte ppm_data_first; | ||
137 | public int ppm; | ||
138 | public int ppm_store; | ||
139 | public int ppm_previous; | ||
140 | public int ppm_len; | ||
141 | public opj_tcp tcps; | ||
142 | public int matrice; | ||
143 | } | ||
144 | |||
145 | public static class j2kdefines | ||
146 | { | ||
123 | public const uint J2K_CP_CSTY_PRT = 0x01; | 147 | public const uint J2K_CP_CSTY_PRT = 0x01; |
124 | public const uint J2K_CP_CSTY_SOP = 0x02; | 148 | public const uint J2K_CP_CSTY_SOP = 0x02; |
125 | public const uint J2K_CP_CSTY_EPH = 0x04; | 149 | public const uint J2K_CP_CSTY_EPH = 0x04; |
@@ -131,28 +155,28 @@ namespace OpenSim.Framework.OpenJpeg | |||
131 | public const uint J2K_CCP_CBLKSTY_PTERM =0x10; | 155 | public const uint J2K_CCP_CBLKSTY_PTERM =0x10; |
132 | public const uint J2K_CCP_CBLKSTY_SEGSYM = 0x20; | 156 | public const uint J2K_CCP_CBLKSTY_SEGSYM = 0x20; |
133 | public const uint J2K_CCP_QNTSTY_NOQNT = 0; | 157 | public const uint J2K_CCP_QNTSTY_NOQNT = 0; |
134 | public const uint J2K_CCP_QNTSTY_SIQNT = 1; | 158 | public const uint J2K_CCP_QNTSTY_SIQNT = 1; |
135 | public const uint J2K_CCP_QNTSTY_SEQNT = 2; | 159 | public const uint J2K_CCP_QNTSTY_SEQNT = 2; |
136 | 160 | ||
137 | public const uint J2K_MS_SOC = 0xff4f; /**< SOC marker value */ | 161 | public const uint J2K_MS_SOC = 0xff4f; /**< SOC marker value */ |
138 | public const uint J2K_MS_SOT = 0xff90; /**< SOT marker value */ | 162 | public const uint J2K_MS_SOT = 0xff90; /**< SOT marker value */ |
139 | public const uint J2K_MS_SOD = 0xff93; /**< SOD marker value */ | 163 | public const uint J2K_MS_SOD = 0xff93; /**< SOD marker value */ |
140 | public const uint J2K_MS_EOC = 0xffd9; /**< EOC marker value */ | 164 | public const uint J2K_MS_EOC = 0xffd9; /**< EOC marker value */ |
141 | public const uint J2K_MS_SIZ = 0xff51; /**< SIZ marker value */ | 165 | public const uint J2K_MS_SIZ = 0xff51; /**< SIZ marker value */ |
142 | public const uint J2K_MS_COD = 0xff52; /**< COD marker value */ | 166 | public const uint J2K_MS_COD = 0xff52; /**< COD marker value */ |
143 | public const uint J2K_MS_COC = 0xff53; /**< COC marker value */ | 167 | public const uint J2K_MS_COC = 0xff53; /**< COC marker value */ |
144 | public const uint J2K_MS_RGN = 0xff5e; /**< RGN marker value */ | 168 | public const uint J2K_MS_RGN = 0xff5e; /**< RGN marker value */ |
145 | public const uint J2K_MS_QCD = 0xff5c; /**< QCD marker value */ | 169 | public const uint J2K_MS_QCD = 0xff5c; /**< QCD marker value */ |
146 | public const uint J2K_MS_QCC = 0xff5d; /**< QCC marker value */ | 170 | public const uint J2K_MS_QCC = 0xff5d; /**< QCC marker value */ |
147 | public const uint J2K_MS_POC = 0xff5f; /**< POC marker value */ | 171 | public const uint J2K_MS_POC = 0xff5f; /**< POC marker value */ |
148 | public const uint J2K_MS_TLM = 0xff55; /**< TLM marker value */ | 172 | public const uint J2K_MS_TLM = 0xff55; /**< TLM marker value */ |
149 | public const uint J2K_MS_PLM = 0xff57; /**< PLM marker value */ | 173 | public const uint J2K_MS_PLM = 0xff57; /**< PLM marker value */ |
150 | public const uint J2K_MS_PLT = 0xff58; /**< PLT marker value */ | 174 | public const uint J2K_MS_PLT = 0xff58; /**< PLT marker value */ |
151 | public const uint J2K_MS_PPM = 0xff60; /**< PPM marker value */ | 175 | public const uint J2K_MS_PPM = 0xff60; /**< PPM marker value */ |
152 | public const uint J2K_MS_PPT = 0xff61; /**< PPT marker value */ | 176 | public const uint J2K_MS_PPT = 0xff61; /**< PPT marker value */ |
153 | public const uint J2K_MS_SOP = 0xff91; /**< SOP marker value */ | 177 | public const uint J2K_MS_SOP = 0xff91; /**< SOP marker value */ |
154 | public const uint J2K_MS_EPH = 0xff92; /**< EPH marker value */ | 178 | public const uint J2K_MS_EPH = 0xff92; /**< EPH marker value */ |
155 | public const uint J2K_MS_CRG = 0xff63; /**< CRG marker value */ | 179 | public const uint J2K_MS_CRG = 0xff63; /**< CRG marker value */ |
156 | public const uint J2K_MS_COM = 0xff64; /**< COM marker value */ | 180 | public const uint J2K_MS_COM = 0xff64; /**< COM marker value */ |
157 | } | 181 | } |
158 | } | 182 | } |
diff --git a/OpenSim/Framework/OpenJpeg/openjpeg.cs b/OpenSim/Framework/OpenJpeg/openjpeg.cs index 2d5e4b5..f0b2518 100644 --- a/OpenSim/Framework/OpenJpeg/openjpeg.cs +++ b/OpenSim/Framework/OpenJpeg/openjpeg.cs | |||
@@ -1,358 +1,375 @@ | |||
1 | using System; | 1 | /* |
2 | using System.Collections.Generic; | 2 | * Copyright (c) Contributors, http://opensimulator.org/ |
3 | using System.Text; | 3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. |
4 | 4 | * | |
5 | namespace OpenSim.Framework.OpenJpeg | 5 | * Redistribution and use in source and binary forms, with or without |
6 | { | 6 | * modification, are permitted provided that the following conditions are met: |
7 | public class openjpeg | 7 | * * Redistributions of source code must retain the above copyright |
8 | { | 8 | * notice, this list of conditions and the following disclaimer. |
9 | public openjpeg() | 9 | * * Redistributions in binary form must reproduce the above copyright |
10 | { | 10 | * notice, this list of conditions and the following disclaimer in the |
11 | 11 | * documentation and/or other materials provided with the distribution. | |
12 | 12 | * * Neither the name of the OpenSimulator Project nor the | |
13 | } | 13 | * names of its contributors may be used to endorse or promote products |
14 | } | 14 | * derived from this software without specific prior written permission. |
15 | 15 | * | |
16 | public enum PROG_ORDER | 16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY |
17 | { | 17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
18 | PROG_UNKNOWN = -1, | 18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
19 | LRCP = 0, | 19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY |
20 | RLCP = 1, | 20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES |
21 | RPCL = 2, | 21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
22 | PCRL = 3, | 22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND |
23 | CPRL = 4 | 23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
24 | } | 24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
25 | 25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |
26 | public enum RSIZ_CAPABILITIES | 26 | */ |
27 | { | 27 | |
28 | STD_RSIZ = 0, | 28 | using System; |
29 | CINEMA2K = 3, | 29 | using System.Collections.Generic; |
30 | CINEMA4K = 4 | 30 | using System.Text; |
31 | } | 31 | |
32 | 32 | namespace OpenSim.Framework.OpenJpeg | |
33 | public enum CINEMA_MODE | 33 | { |
34 | { | 34 | public class openjpeg |
35 | OFF = 0, | 35 | { |
36 | CINEMA2K_24 = 1, | 36 | public openjpeg() |
37 | CINEMA2K_48 = 2, | 37 | { |
38 | CINEMA4K_24 = 3 | 38 | } |
39 | } | 39 | } |
40 | 40 | ||
41 | public enum COLOR_SPACE | 41 | public enum PROG_ORDER |
42 | { | 42 | { |
43 | CLRSPC_UNKNOWN = -1, | 43 | PROG_UNKNOWN = -1, |
44 | CLRSPC_SRGB = 1, | 44 | LRCP = 0, |
45 | CLRSPC_GRAY = 2, | 45 | RLCP = 1, |
46 | CLRSPC_SYCC = 3 | 46 | RPCL = 2, |
47 | } | 47 | PCRL = 3, |
48 | 48 | CPRL = 4 | |
49 | public enum CODEC_FORMAT | 49 | } |
50 | { | 50 | |
51 | CODEC_UNKNOWN = -1, | 51 | public enum RSIZ_CAPABILITIES |
52 | CODEC_J2K = 0, | 52 | { |
53 | CODEC_JPT = 1, | 53 | STD_RSIZ = 0, |
54 | CODEC_JP2 = 2 | 54 | CINEMA2K = 3, |
55 | } | 55 | CINEMA4K = 4 |
56 | 56 | } | |
57 | public enum LIMIT_DECODING | 57 | |
58 | { | 58 | public enum CINEMA_MODE |
59 | NO_LIMITATION = 0, | 59 | { |
60 | LIMIT_TO_MAIN_HEADER=1, | 60 | OFF = 0, |
61 | DECODE_ALL_BUT_PACKETS = 2 | 61 | CINEMA2K_24 = 1, |
62 | } | 62 | CINEMA2K_48 = 2, |
63 | 63 | CINEMA4K_24 = 3 | |
64 | public struct opj_poc | 64 | } |
65 | { | 65 | |
66 | public int resno0, compno0; | 66 | public enum COLOR_SPACE |
67 | public int layno1, resno1, compno1; | 67 | { |
68 | public int layno0, precno0, precno1; | 68 | CLRSPC_UNKNOWN = -1, |
69 | public PROG_ORDER prg1, prg; | 69 | CLRSPC_SRGB = 1, |
70 | /// <summary> | 70 | CLRSPC_GRAY = 2, |
71 | /// Don't forget to initialize with 5 elements | 71 | CLRSPC_SYCC = 3 |
72 | /// </summary> | 72 | } |
73 | public sbyte[] progorder; | 73 | |
74 | public int tile; | 74 | public enum CODEC_FORMAT |
75 | public int tx0, tx1, ty0, ty1; | 75 | { |
76 | public int layS, resS, copmS, prcS; | 76 | CODEC_UNKNOWN = -1, |
77 | public int layE, resE, compE, prcE; | 77 | CODEC_J2K = 0, |
78 | public int txS, txE, tyS, tyE, dx, dy; | 78 | CODEC_JPT = 1, |
79 | public int lay_t, res_t, comp_t, prc_t, tx0_t, ty0_t; | 79 | CODEC_JP2 = 2 |
80 | } | 80 | } |
81 | 81 | ||
82 | public struct opj_cparameters | 82 | public enum LIMIT_DECODING |
83 | { | 83 | { |
84 | public bool tile_size_on; | 84 | NO_LIMITATION = 0, |
85 | public int cp_tx0; | 85 | LIMIT_TO_MAIN_HEADER=1, |
86 | public int cp_ty0; | 86 | DECODE_ALL_BUT_PACKETS = 2 |
87 | public int cp_tdx; | 87 | } |
88 | public int cp_tdy; | 88 | |
89 | public int cp_disto_alloc; | 89 | public struct opj_poc |
90 | public int cp_fixed_alloc; | 90 | { |
91 | public int cp_fixed_wuality; | 91 | public int resno0, compno0; |
92 | public int cp_matrice; | 92 | public int layno1, resno1, compno1; |
93 | public sbyte cp_comment; | 93 | public int layno0, precno0, precno1; |
94 | public int csty; | 94 | public PROG_ORDER prg1, prg; |
95 | public PROG_ORDER prog_order; | 95 | /// <summary> |
96 | 96 | /// Don't forget to initialize with 5 elements | |
97 | /// <summary> | 97 | /// </summary> |
98 | /// Don't forget to initialize 32 elements | 98 | public sbyte[] progorder; |
99 | /// </summary> | 99 | public int tile; |
100 | public opj_poc[] POC; | 100 | public int tx0, tx1, ty0, ty1; |
101 | public int numpocs; | 101 | public int layS, resS, copmS, prcS; |
102 | public int tcp_numlayers; | 102 | public int layE, resE, compE, prcE; |
103 | /// <summary> | 103 | public int txS, txE, tyS, tyE, dx, dy; |
104 | /// Don't forget to intitialize 100 elements | 104 | public int lay_t, res_t, comp_t, prc_t, tx0_t, ty0_t; |
105 | /// </summary> | 105 | } |
106 | public float[] tcp_rates; | 106 | |
107 | /// <summary> | 107 | public struct opj_cparameters |
108 | /// Don't forget to initialize 100 elements | 108 | { |
109 | /// </summary> | 109 | public bool tile_size_on; |
110 | public float[] tcp_distoratio; | 110 | public int cp_tx0; |
111 | public int numresolution; | 111 | public int cp_ty0; |
112 | public int cblockw_init; | 112 | public int cp_tdx; |
113 | public int cblockh_init; | 113 | public int cp_tdy; |
114 | public int mode; | 114 | public int cp_disto_alloc; |
115 | public int irreversible; | 115 | public int cp_fixed_alloc; |
116 | public int roi_compno; | 116 | public int cp_fixed_wuality; |
117 | public int roi_shift; | 117 | public int cp_matrice; |
118 | public int res_spec; | 118 | public sbyte cp_comment; |
119 | 119 | public int csty; | |
120 | /// <summary> | 120 | public PROG_ORDER prog_order; |
121 | /// Don't forget to initialize 33 elements | 121 | |
122 | /// </summary> | 122 | /// <summary> |
123 | public int[] prc_init; | 123 | /// Don't forget to initialize 32 elements |
124 | /// <summary> | 124 | /// </summary> |
125 | /// Don't forget to initialize 33 elements | 125 | public opj_poc[] POC; |
126 | /// </summary> | 126 | public int numpocs; |
127 | public int[] prch_init; | 127 | public int tcp_numlayers; |
128 | 128 | /// <summary> | |
129 | public string infile; | 129 | /// Don't forget to intitialize 100 elements |
130 | public string outfile; | 130 | /// </summary> |
131 | public int index_on; | 131 | public float[] tcp_rates; |
132 | public string index; | 132 | /// <summary> |
133 | public int image_offset_x0; | 133 | /// Don't forget to initialize 100 elements |
134 | public int image_offset_y0; | 134 | /// </summary> |
135 | public int subsampling_dx; | 135 | public float[] tcp_distoratio; |
136 | public int subsampling_dy; | 136 | public int numresolution; |
137 | public int decod_format; | 137 | public int cblockw_init; |
138 | public int cod_format; | 138 | public int cblockh_init; |
139 | public bool jpwl_epc_on; | 139 | public int mode; |
140 | public int jpwl_hprot_MH; | 140 | public int irreversible; |
141 | /// <summary> | 141 | public int roi_compno; |
142 | /// Don't forget to initialize 16 elements | 142 | public int roi_shift; |
143 | /// </summary> | 143 | public int res_spec; |
144 | public int[] jpwl_hprot_TPH_tileno; | 144 | |
145 | /// <summary> | 145 | /// <summary> |
146 | /// Don't forget to initialize 16 elements | 146 | /// Don't forget to initialize 33 elements |
147 | /// </summary> | 147 | /// </summary> |
148 | public int[] jpwl_hprot_TPH; | 148 | public int[] prc_init; |
149 | 149 | /// <summary> | |
150 | /// <summary> | 150 | /// Don't forget to initialize 33 elements |
151 | /// Don't forget to initialize 16 elements | 151 | /// </summary> |
152 | /// </summary> | 152 | public int[] prch_init; |
153 | public int[] jpwl_pprot_tileno; | 153 | |
154 | public int[] jpwl_pprot_packno; | 154 | public string infile; |
155 | public int[] jpwl_pprot; | 155 | public string outfile; |
156 | public int jpwl_sens_size; | 156 | public int index_on; |
157 | public int jpwl_sense_addr; | 157 | public string index; |
158 | public int jpwl_sens_range; | 158 | public int image_offset_x0; |
159 | public int jpwl_sens_MH; | 159 | public int image_offset_y0; |
160 | 160 | public int subsampling_dx; | |
161 | /// <summary> | 161 | public int subsampling_dy; |
162 | /// Don't forget to initialize 16 elements | 162 | public int decod_format; |
163 | /// </summary> | 163 | public int cod_format; |
164 | public int[] jpwl_sens_TPH_tileno; | 164 | public bool jpwl_epc_on; |
165 | 165 | public int jpwl_hprot_MH; | |
166 | /// <summary> | 166 | /// <summary> |
167 | /// Don't forget to initialize 16 elements | 167 | /// Don't forget to initialize 16 elements |
168 | /// </summary> | 168 | /// </summary> |
169 | public int[] jpwl_sens_TPH; | 169 | public int[] jpwl_hprot_TPH_tileno; |
170 | public CINEMA_MODE cp_cinema; | 170 | /// <summary> |
171 | public int max_comp_size; | 171 | /// Don't forget to initialize 16 elements |
172 | public sbyte tp_on; | 172 | /// </summary> |
173 | public sbyte tp_flag; | 173 | public int[] jpwl_hprot_TPH; |
174 | public sbyte tcp_mct; | 174 | |
175 | } | 175 | /// <summary> |
176 | 176 | /// Don't forget to initialize 16 elements | |
177 | public struct opj_dparameters | 177 | /// </summary> |
178 | { | 178 | public int[] jpwl_pprot_tileno; |
179 | public int cp_reduce; | 179 | public int[] jpwl_pprot_packno; |
180 | public int cp_layer; | 180 | public int[] jpwl_pprot; |
181 | public string infile; | 181 | public int jpwl_sens_size; |
182 | public string outfile; | 182 | public int jpwl_sense_addr; |
183 | public int decod_format; | 183 | public int jpwl_sens_range; |
184 | public int cod_format; | 184 | public int jpwl_sens_MH; |
185 | public bool jpwl_correct; | 185 | |
186 | public int jpwl_exp_comps; | 186 | /// <summary> |
187 | public int jpwl_max_tiles; | 187 | /// Don't forget to initialize 16 elements |
188 | public LIMIT_DECODING cp_limit_decoding; | 188 | /// </summary> |
189 | 189 | public int[] jpwl_sens_TPH_tileno; | |
190 | } | 190 | |
191 | 191 | /// <summary> | |
192 | public struct opj_common_fields | 192 | /// Don't forget to initialize 16 elements |
193 | { | 193 | /// </summary> |
194 | public bool is_decompressor; | 194 | public int[] jpwl_sens_TPH; |
195 | public CODEC_FORMAT codec_format; | 195 | public CINEMA_MODE cp_cinema; |
196 | } | 196 | public int max_comp_size; |
197 | 197 | public sbyte tp_on; | |
198 | public struct opj_common_struct | 198 | public sbyte tp_flag; |
199 | { | 199 | public sbyte tcp_mct; |
200 | public opj_common_fields flds; | 200 | } |
201 | } | 201 | |
202 | 202 | public struct opj_dparameters | |
203 | public struct opj_cinfo | 203 | { |
204 | { | 204 | public int cp_reduce; |
205 | public opj_common_fields flds; | 205 | public int cp_layer; |
206 | } | 206 | public string infile; |
207 | public struct opj_dinfo | 207 | public string outfile; |
208 | { | 208 | public int decod_format; |
209 | public opj_common_fields flds; | 209 | public int cod_format; |
210 | } | 210 | public bool jpwl_correct; |
211 | 211 | public int jpwl_exp_comps; | |
212 | public struct opj_cio | 212 | public int jpwl_max_tiles; |
213 | { | 213 | public LIMIT_DECODING cp_limit_decoding; |
214 | public opj_common_struct cinfo; | 214 | } |
215 | public int openmode; | 215 | |
216 | public byte buffer; | 216 | public struct opj_common_fields |
217 | public int length; | 217 | { |
218 | public byte start; | 218 | public bool is_decompressor; |
219 | public byte end; | 219 | public CODEC_FORMAT codec_format; |
220 | public byte bp; | 220 | } |
221 | } | 221 | |
222 | 222 | public struct opj_common_struct | |
223 | public struct opj_image_comp | 223 | { |
224 | { | 224 | public opj_common_fields flds; |
225 | public int dx; | 225 | } |
226 | public int dy; | 226 | |
227 | public int w; | 227 | public struct opj_cinfo |
228 | public int h; | 228 | { |
229 | public int x0; | 229 | public opj_common_fields flds; |
230 | public int y0; | 230 | } |
231 | public int prec; | 231 | |
232 | public int bpp; | 232 | public struct opj_dinfo |
233 | public int sgnd; | 233 | { |
234 | public int resno_decoded; | 234 | public opj_common_fields flds; |
235 | public int factor; | 235 | } |
236 | public int data; | 236 | |
237 | } | 237 | public struct opj_cio |
238 | 238 | { | |
239 | public struct opj_image | 239 | public opj_common_struct cinfo; |
240 | { | 240 | public int openmode; |
241 | public int x0; | 241 | public byte buffer; |
242 | public int y0; | 242 | public int length; |
243 | public int x1; | 243 | public byte start; |
244 | public int y1; | 244 | public byte end; |
245 | public int numcomps; | 245 | public byte bp; |
246 | public COLOR_SPACE color_space; | 246 | } |
247 | public opj_image_comp comps; | 247 | |
248 | } | 248 | public struct opj_image_comp |
249 | 249 | { | |
250 | public struct opj_image_comptparm | 250 | public int dx; |
251 | { | 251 | public int dy; |
252 | public int dx; | 252 | public int w; |
253 | public int dy; | 253 | public int h; |
254 | public int w; | 254 | public int x0; |
255 | public int h; | 255 | public int y0; |
256 | public int x0; | 256 | public int prec; |
257 | public int y0; | 257 | public int bpp; |
258 | public int prec; | 258 | public int sgnd; |
259 | public int bpp; | 259 | public int resno_decoded; |
260 | public int sgnd; | 260 | public int factor; |
261 | } | 261 | public int data; |
262 | 262 | } | |
263 | public struct opj_packet_info | 263 | |
264 | { | 264 | public struct opj_image |
265 | public int start_pos; | 265 | { |
266 | public int end_ph_pos; | 266 | public int x0; |
267 | public int end_pos; | 267 | public int y0; |
268 | public double disto; | 268 | public int x1; |
269 | } | 269 | public int y1; |
270 | 270 | public int numcomps; | |
271 | public struct opj_tp_info | 271 | public COLOR_SPACE color_space; |
272 | { | 272 | public opj_image_comp comps; |
273 | public int tp_start_pos; | 273 | } |
274 | public int tp_end_header; | 274 | |
275 | public int tp_end_pos; | 275 | public struct opj_image_comptparm |
276 | public int tp_start_pack; | 276 | { |
277 | public int tp_numpacks; | 277 | public int dx; |
278 | } | 278 | public int dy; |
279 | 279 | public int w; | |
280 | public struct opj_tile_info | 280 | public int h; |
281 | { | 281 | public int x0; |
282 | public double thresh; | 282 | public int y0; |
283 | public int tileno; | 283 | public int prec; |
284 | public int start_pos; | 284 | public int bpp; |
285 | public int end_header; | 285 | public int sgnd; |
286 | public int end_pos; | 286 | } |
287 | /// <summary> | 287 | |
288 | /// Don't forget to initialize 33 elements | 288 | public struct opj_packet_info |
289 | /// </summary> | 289 | { |
290 | public int[] pw; | 290 | public int start_pos; |
291 | /// <summary> | 291 | public int end_ph_pos; |
292 | /// Don't forget to initialize 33 elements | 292 | public int end_pos; |
293 | /// </summary> | 293 | public double disto; |
294 | public int[] ph; | 294 | } |
295 | /// <summary> | 295 | |
296 | /// Don't forget to initialize 33 elements | 296 | public struct opj_tp_info |
297 | /// </summary> | 297 | { |
298 | public int[] pdx; | 298 | public int tp_start_pos; |
299 | /// <summary> | 299 | public int tp_end_header; |
300 | /// Don't forget to initialize 33 elements | 300 | public int tp_end_pos; |
301 | /// </summary> | 301 | public int tp_start_pack; |
302 | public int[] pdy; | 302 | public int tp_numpacks; |
303 | 303 | } | |
304 | public opj_packet_info packet; | 304 | |
305 | public int numpix; | 305 | public struct opj_tile_info |
306 | public double distotile; | 306 | { |
307 | public int num_tps; | 307 | public double thresh; |
308 | public opj_tp_info tp; | 308 | public int tileno; |
309 | } | 309 | public int start_pos; |
310 | 310 | public int end_header; | |
311 | public struct opj_marker_info_t | 311 | public int end_pos; |
312 | { | 312 | /// <summary> |
313 | public ushort type; | 313 | /// Don't forget to initialize 33 elements |
314 | public int pos; | 314 | /// </summary> |
315 | public int len; | 315 | public int[] pw; |
316 | } | 316 | /// <summary> |
317 | 317 | /// Don't forget to initialize 33 elements | |
318 | public struct opj_codestream_info | 318 | /// </summary> |
319 | { | 319 | public int[] ph; |
320 | public double D_max; | 320 | /// <summary> |
321 | public int packno; | 321 | /// Don't forget to initialize 33 elements |
322 | public int index_write; | 322 | /// </summary> |
323 | public int image_w; | 323 | public int[] pdx; |
324 | public int image_h; | 324 | /// <summary> |
325 | 325 | /// Don't forget to initialize 33 elements | |
326 | public PROG_ORDER prog; | 326 | /// </summary> |
327 | 327 | public int[] pdy; | |
328 | public int tile_x; | 328 | |
329 | public int tile_y; | 329 | public opj_packet_info packet; |
330 | public int tile_Ox; | 330 | public int numpix; |
331 | public int tile_Oy; | 331 | public double distotile; |
332 | public int tw; | 332 | public int num_tps; |
333 | public int numcomps; | 333 | public opj_tp_info tp; |
334 | public int numlayers; | 334 | } |
335 | public int numdecompos; | 335 | |
336 | public int marknum; | 336 | public struct opj_marker_info_t |
337 | public opj_marker_info_t marker; | 337 | { |
338 | public int maxmarknum; | 338 | public ushort type; |
339 | public int main_head_start; | 339 | public int pos; |
340 | public int main_head_end; | 340 | public int len; |
341 | public int codestream_size; | 341 | } |
342 | public opj_tile_info tile; | 342 | |
343 | 343 | public struct opj_codestream_info | |
344 | } | 344 | { |
345 | 345 | public double D_max; | |
346 | 346 | public int packno; | |
347 | 347 | public int index_write; | |
348 | 348 | public int image_w; | |
349 | 349 | public int image_h; | |
350 | 350 | ||
351 | public static class opj_defines | 351 | public PROG_ORDER prog; |
352 | { | 352 | |
353 | public const int OPJ_STREAM_READ = 0x0001; | 353 | public int tile_x; |
354 | public const int OPJ_STREAM_WRITE = 0x0002; | 354 | public int tile_y; |
355 | 355 | public int tile_Ox; | |
356 | } | 356 | public int tile_Oy; |
357 | 357 | public int tw; | |
358 | } | 358 | public int numcomps; |
359 | public int numlayers; | ||
360 | public int numdecompos; | ||
361 | public int marknum; | ||
362 | public opj_marker_info_t marker; | ||
363 | public int maxmarknum; | ||
364 | public int main_head_start; | ||
365 | public int main_head_end; | ||
366 | public int codestream_size; | ||
367 | public opj_tile_info tile; | ||
368 | } | ||
369 | |||
370 | public static class opj_defines | ||
371 | { | ||
372 | public const int OPJ_STREAM_READ = 0x0001; | ||
373 | public const int OPJ_STREAM_WRITE = 0x0002; | ||
374 | } | ||
375 | } | ||
diff --git a/OpenSim/Framework/OpenJpeg/pi.cs b/OpenSim/Framework/OpenJpeg/pi.cs index f7e211f..7da7d71 100644 --- a/OpenSim/Framework/OpenJpeg/pi.cs +++ b/OpenSim/Framework/OpenJpeg/pi.cs | |||
@@ -1,48 +1,71 @@ | |||
1 | using System; | 1 | /* |
2 | using System.Collections.Generic; | 2 | * Copyright (c) Contributors, http://opensimulator.org/ |
3 | using System.Text; | 3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. |
4 | 4 | * | |
5 | namespace OpenSim.Framework.OpenJpeg | 5 | * Redistribution and use in source and binary forms, with or without |
6 | { | 6 | * modification, are permitted provided that the following conditions are met: |
7 | public static class pi | 7 | * * Redistributions of source code must retain the above copyright |
8 | { | 8 | * notice, this list of conditions and the following disclaimer. |
9 | } | 9 | * * Redistributions in binary form must reproduce the above copyright |
10 | 10 | * notice, this list of conditions and the following disclaimer in the | |
11 | public struct opj_pi_resolution | 11 | * documentation and/or other materials provided with the distribution. |
12 | { | 12 | * * Neither the name of the OpenSimulator Project nor the |
13 | public int pdx, pdy; | 13 | * names of its contributors may be used to endorse or promote products |
14 | public int pw, ph; | 14 | * derived from this software without specific prior written permission. |
15 | } | 15 | * |
16 | 16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY | |
17 | public struct opj_pi_comp | 17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
18 | { | 18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
19 | public int dx, dy; | 19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY |
20 | public int numresolutions; | 20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES |
21 | public opj_pi_resolution resolutions; | 21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
22 | } | 22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND |
23 | 23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | |
24 | public struct obj_pi_iterator | 24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
25 | { | 25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
26 | public sbyte tp_on; | 26 | */ |
27 | public short include; | 27 | |
28 | public int step_l; | 28 | using System; |
29 | public int step_r; | 29 | using System.Collections.Generic; |
30 | public int step_c; | 30 | using System.Text; |
31 | public int step_p; | 31 | |
32 | public int compno; | 32 | namespace OpenSim.Framework.OpenJpeg |
33 | public int resno; | 33 | { |
34 | public int precno; | 34 | public static class pi |
35 | public int layno; | 35 | { |
36 | public int first; | 36 | } |
37 | public opj_poc poc; | 37 | |
38 | public int numcomps; | 38 | public struct opj_pi_resolution |
39 | public opj_pi_comp comps; | 39 | { |
40 | 40 | public int pdx, pdy; | |
41 | public int tx0, ty0, tx1, ty1; | 41 | public int pw, ph; |
42 | public int x, y, dx, dy; | 42 | } |
43 | } | 43 | |
44 | 44 | public struct opj_pi_comp | |
45 | 45 | { | |
46 | 46 | public int dx, dy; | |
47 | 47 | public int numresolutions; | |
48 | } | 48 | public opj_pi_resolution resolutions; |
49 | } | ||
50 | |||
51 | public struct obj_pi_iterator | ||
52 | { | ||
53 | public sbyte tp_on; | ||
54 | public short include; | ||
55 | public int step_l; | ||
56 | public int step_r; | ||
57 | public int step_c; | ||
58 | public int step_p; | ||
59 | public int compno; | ||
60 | public int resno; | ||
61 | public int precno; | ||
62 | public int layno; | ||
63 | public int first; | ||
64 | public opj_poc poc; | ||
65 | public int numcomps; | ||
66 | public opj_pi_comp comps; | ||
67 | |||
68 | public int tx0, ty0, tx1, ty1; | ||
69 | public int x, y, dx, dy; | ||
70 | } | ||
71 | } | ||
diff --git a/OpenSim/Grid/UserServer/OpenIdService.cs b/OpenSim/Grid/UserServer/OpenIdService.cs index 695968f..78e820e 100644 --- a/OpenSim/Grid/UserServer/OpenIdService.cs +++ b/OpenSim/Grid/UserServer/OpenIdService.cs | |||
@@ -1,339 +1,339 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (c) Contributors, http://opensimulator.org/ | 2 | * Copyright (c) Contributors, http://opensimulator.org/ |
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | 3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. |
4 | * | 4 | * |
5 | * Redistribution and use in source and binary forms, with or without | 5 | * Redistribution and use in source and binary forms, with or without |
6 | * modification, are permitted provided that the following conditions are met: | 6 | * modification, are permitted provided that the following conditions are met: |
7 | * * Redistributions of source code must retain the above copyright | 7 | * * Redistributions of source code must retain the above copyright |
8 | * notice, this list of conditions and the following disclaimer. | 8 | * notice, this list of conditions and the following disclaimer. |
9 | * * Redistributions in binary form must reproduce the above copyright | 9 | * * Redistributions in binary form must reproduce the above copyright |
10 | * notice, this list of conditions and the following disclaimer in the | 10 | * notice, this list of conditions and the following disclaimer in the |
11 | * documentation and/or other materials provided with the distribution. | 11 | * documentation and/or other materials provided with the distribution. |
12 | * * Neither the name of the OpenSim Project nor the | 12 | * * Neither the name of the OpenSim Project nor the |
13 | * names of its contributors may be used to endorse or promote products | 13 | * names of its contributors may be used to endorse or promote products |
14 | * derived from this software without specific prior written permission. | 14 | * derived from this software without specific prior written permission. |
15 | * | 15 | * |
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY | 16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY |
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | 17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | 18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | 19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY |
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | 20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES |
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | 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 | 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 | 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 | 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. | 25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
26 | */ | 26 | */ |
27 | 27 | ||
28 | using System; | 28 | using System; |
29 | using System.Collections.Generic; | 29 | using System.Collections.Generic; |
30 | using System.Collections.Specialized; | 30 | using System.Collections.Specialized; |
31 | using System.IO; | 31 | using System.IO; |
32 | using System.Net; | 32 | using System.Net; |
33 | using System.Web; | 33 | using System.Web; |
34 | using System.Text; | 34 | using System.Text; |
35 | using DotNetOpenId; | 35 | using DotNetOpenId; |
36 | using DotNetOpenId.Provider; | 36 | using DotNetOpenId.Provider; |
37 | using log4net; | 37 | using log4net; |
38 | using OpenSim.Framework; | 38 | using OpenSim.Framework; |
39 | using OpenSim.Framework.Servers; | 39 | using OpenSim.Framework.Servers; |
40 | 40 | ||
41 | namespace OpenSim.Grid.UserServer | 41 | namespace OpenSim.Grid.UserServer |
42 | { | 42 | { |
43 | /// <summary> | 43 | /// <summary> |
44 | /// Temporary, in-memory store for OpenID associations | 44 | /// Temporary, in-memory store for OpenID associations |
45 | /// </summary> | 45 | /// </summary> |
46 | public class ProviderMemoryStore : IAssociationStore<AssociationRelyingPartyType> | 46 | public class ProviderMemoryStore : IAssociationStore<AssociationRelyingPartyType> |
47 | { | 47 | { |
48 | private class AssociationItem | 48 | private class AssociationItem |
49 | { | 49 | { |
50 | public AssociationRelyingPartyType DistinguishingFactor; | 50 | public AssociationRelyingPartyType DistinguishingFactor; |
51 | public string Handle; | 51 | public string Handle; |
52 | public DateTime Expires; | 52 | public DateTime Expires; |
53 | public byte[] PrivateData; | 53 | public byte[] PrivateData; |
54 | } | 54 | } |
55 | 55 | ||
56 | Dictionary<string, AssociationItem> m_store = new Dictionary<string, AssociationItem>(); | 56 | Dictionary<string, AssociationItem> m_store = new Dictionary<string, AssociationItem>(); |
57 | SortedList<DateTime, AssociationItem> m_sortedStore = new SortedList<DateTime, AssociationItem>(); | 57 | SortedList<DateTime, AssociationItem> m_sortedStore = new SortedList<DateTime, AssociationItem>(); |
58 | object m_syncRoot = new object(); | 58 | object m_syncRoot = new object(); |
59 | 59 | ||
60 | #region IAssociationStore<AssociationRelyingPartyType> Members | 60 | #region IAssociationStore<AssociationRelyingPartyType> Members |
61 | 61 | ||
62 | public void StoreAssociation(AssociationRelyingPartyType distinguishingFactor, Association assoc) | 62 | public void StoreAssociation(AssociationRelyingPartyType distinguishingFactor, Association assoc) |
63 | { | 63 | { |
64 | AssociationItem item = new AssociationItem(); | 64 | AssociationItem item = new AssociationItem(); |
65 | item.DistinguishingFactor = distinguishingFactor; | 65 | item.DistinguishingFactor = distinguishingFactor; |
66 | item.Handle = assoc.Handle; | 66 | item.Handle = assoc.Handle; |
67 | item.Expires = assoc.Expires.ToLocalTime(); | 67 | item.Expires = assoc.Expires.ToLocalTime(); |
68 | item.PrivateData = assoc.SerializePrivateData(); | 68 | item.PrivateData = assoc.SerializePrivateData(); |
69 | 69 | ||
70 | lock (m_syncRoot) | 70 | lock (m_syncRoot) |
71 | { | 71 | { |
72 | m_store[item.Handle] = item; | 72 | m_store[item.Handle] = item; |
73 | m_sortedStore[item.Expires] = item; | 73 | m_sortedStore[item.Expires] = item; |
74 | } | 74 | } |
75 | } | 75 | } |
76 | 76 | ||
77 | public Association GetAssociation(AssociationRelyingPartyType distinguishingFactor) | 77 | public Association GetAssociation(AssociationRelyingPartyType distinguishingFactor) |
78 | { | 78 | { |
79 | lock (m_syncRoot) | 79 | lock (m_syncRoot) |
80 | { | 80 | { |
81 | if (m_sortedStore.Count > 0) | 81 | if (m_sortedStore.Count > 0) |
82 | { | 82 | { |
83 | AssociationItem item = m_sortedStore.Values[m_sortedStore.Count - 1]; | 83 | AssociationItem item = m_sortedStore.Values[m_sortedStore.Count - 1]; |
84 | return Association.Deserialize(item.Handle, item.Expires.ToUniversalTime(), item.PrivateData); | 84 | return Association.Deserialize(item.Handle, item.Expires.ToUniversalTime(), item.PrivateData); |
85 | } | 85 | } |
86 | else | 86 | else |
87 | { | 87 | { |
88 | return null; | 88 | return null; |
89 | } | 89 | } |
90 | } | 90 | } |
91 | } | 91 | } |
92 | 92 | ||
93 | public Association GetAssociation(AssociationRelyingPartyType distinguishingFactor, string handle) | 93 | public Association GetAssociation(AssociationRelyingPartyType distinguishingFactor, string handle) |
94 | { | 94 | { |
95 | AssociationItem item; | 95 | AssociationItem item; |
96 | bool success = false; | 96 | bool success = false; |
97 | lock (m_syncRoot) | 97 | lock (m_syncRoot) |
98 | success = m_store.TryGetValue(handle, out item); | 98 | success = m_store.TryGetValue(handle, out item); |
99 | 99 | ||
100 | if (success) | 100 | if (success) |
101 | return Association.Deserialize(item.Handle, item.Expires.ToUniversalTime(), item.PrivateData); | 101 | return Association.Deserialize(item.Handle, item.Expires.ToUniversalTime(), item.PrivateData); |
102 | else | 102 | else |
103 | return null; | 103 | return null; |
104 | } | 104 | } |
105 | 105 | ||
106 | public bool RemoveAssociation(AssociationRelyingPartyType distinguishingFactor, string handle) | 106 | public bool RemoveAssociation(AssociationRelyingPartyType distinguishingFactor, string handle) |
107 | { | 107 | { |
108 | lock (m_syncRoot) | 108 | lock (m_syncRoot) |
109 | { | 109 | { |
110 | for (int i = 0; i < m_sortedStore.Values.Count; i++) | 110 | for (int i = 0; i < m_sortedStore.Values.Count; i++) |
111 | { | 111 | { |
112 | AssociationItem item = m_sortedStore.Values[i]; | 112 | AssociationItem item = m_sortedStore.Values[i]; |
113 | if (item.Handle == handle) | 113 | if (item.Handle == handle) |
114 | { | 114 | { |
115 | m_sortedStore.RemoveAt(i); | 115 | m_sortedStore.RemoveAt(i); |
116 | break; | 116 | break; |
117 | } | 117 | } |
118 | } | 118 | } |
119 | 119 | ||
120 | return m_store.Remove(handle); | 120 | return m_store.Remove(handle); |
121 | } | 121 | } |
122 | } | 122 | } |
123 | 123 | ||
124 | public void ClearExpiredAssociations() | 124 | public void ClearExpiredAssociations() |
125 | { | 125 | { |
126 | lock (m_syncRoot) | 126 | lock (m_syncRoot) |
127 | { | 127 | { |
128 | List<AssociationItem> itemsCopy = new List<AssociationItem>(m_sortedStore.Values); | 128 | List<AssociationItem> itemsCopy = new List<AssociationItem>(m_sortedStore.Values); |
129 | DateTime now = DateTime.Now; | 129 | DateTime now = DateTime.Now; |
130 | 130 | ||
131 | for (int i = 0; i < itemsCopy.Count; i++) | 131 | for (int i = 0; i < itemsCopy.Count; i++) |
132 | { | 132 | { |
133 | AssociationItem item = itemsCopy[i]; | 133 | AssociationItem item = itemsCopy[i]; |
134 | 134 | ||
135 | if (item.Expires <= now) | 135 | if (item.Expires <= now) |
136 | { | 136 | { |
137 | m_sortedStore.RemoveAt(i); | 137 | m_sortedStore.RemoveAt(i); |
138 | m_store.Remove(item.Handle); | 138 | m_store.Remove(item.Handle); |
139 | } | 139 | } |
140 | } | 140 | } |
141 | } | 141 | } |
142 | } | 142 | } |
143 | 143 | ||
144 | #endregion | 144 | #endregion |
145 | } | 145 | } |
146 | 146 | ||
147 | public class OpenIdStreamHandler : IStreamHandler | 147 | public class OpenIdStreamHandler : IStreamHandler |
148 | { | 148 | { |
149 | #region HTML | 149 | #region HTML |
150 | 150 | ||
151 | /// <summary>Login form used to authenticate OpenID requests</summary> | 151 | /// <summary>Login form used to authenticate OpenID requests</summary> |
152 | const string LOGIN_PAGE = | 152 | const string LOGIN_PAGE = |
153 | @"<html> | 153 | @"<html> |
154 | <head><title>OpenSim OpenID Login</title></head> | 154 | <head><title>OpenSim OpenID Login</title></head> |
155 | <body> | 155 | <body> |
156 | <h3>OpenSim Login</h3> | 156 | <h3>OpenSim Login</h3> |
157 | <form method=""post""> | 157 | <form method=""post""> |
158 | <label for=""first"">First Name:</label> <input readonly type=""text"" name=""first"" id=""first"" value=""{0}""/> | 158 | <label for=""first"">First Name:</label> <input readonly type=""text"" name=""first"" id=""first"" value=""{0}""/> |
159 | <label for=""last"">Last Name:</label> <input readonly type=""text"" name=""last"" id=""last"" value=""{1}""/> | 159 | <label for=""last"">Last Name:</label> <input readonly type=""text"" name=""last"" id=""last"" value=""{1}""/> |
160 | <label for=""pass"">Password:</label> <input type=""password"" name=""pass"" id=""pass""/> | 160 | <label for=""pass"">Password:</label> <input type=""password"" name=""pass"" id=""pass""/> |
161 | <input type=""submit"" value=""Login""> | 161 | <input type=""submit"" value=""Login""> |
162 | </form> | 162 | </form> |
163 | </body> | 163 | </body> |
164 | </html>"; | 164 | </html>"; |
165 | 165 | ||
166 | /// <summary>Page shown for a valid OpenID identity</summary> | 166 | /// <summary>Page shown for a valid OpenID identity</summary> |
167 | const string OPENID_PAGE = | 167 | const string OPENID_PAGE = |
168 | @"<html> | 168 | @"<html> |
169 | <head> | 169 | <head> |
170 | <title>{2} {3}</title> | 170 | <title>{2} {3}</title> |
171 | <link rel=""openid2.provider openid.server"" href=""{0}://{1}/openid/server/""/> | 171 | <link rel=""openid2.provider openid.server"" href=""{0}://{1}/openid/server/""/> |
172 | </head> | 172 | </head> |
173 | <body>OpenID identifier for {2} {3}</body> | 173 | <body>OpenID identifier for {2} {3}</body> |
174 | </html> | 174 | </html> |
175 | "; | 175 | "; |
176 | 176 | ||
177 | /// <summary>Page shown for an invalid OpenID identity</summary> | 177 | /// <summary>Page shown for an invalid OpenID identity</summary> |
178 | const string INVALID_OPENID_PAGE = | 178 | const string INVALID_OPENID_PAGE = |
179 | @"<html><head><title>Identity not found</title></head> | 179 | @"<html><head><title>Identity not found</title></head> |
180 | <body>Invalid OpenID identity</body></html>"; | 180 | <body>Invalid OpenID identity</body></html>"; |
181 | 181 | ||
182 | /// <summary>Page shown if the OpenID endpoint is requested directly</summary> | 182 | /// <summary>Page shown if the OpenID endpoint is requested directly</summary> |
183 | const string ENDPOINT_PAGE = | 183 | const string ENDPOINT_PAGE = |
184 | @"<html><head><title>OpenID Endpoint</title></head><body> | 184 | @"<html><head><title>OpenID Endpoint</title></head><body> |
185 | This is an OpenID server endpoint, not a human-readable resource. | 185 | This is an OpenID server endpoint, not a human-readable resource. |
186 | For more information, see <a href='http://openid.net/'>http://openid.net/</a>. | 186 | For more information, see <a href='http://openid.net/'>http://openid.net/</a>. |
187 | </body></html>"; | 187 | </body></html>"; |
188 | 188 | ||
189 | #endregion HTML | 189 | #endregion HTML |
190 | 190 | ||
191 | public string ContentType { get { return m_contentType; } } | 191 | public string ContentType { get { return m_contentType; } } |
192 | public string HttpMethod { get { return m_httpMethod; } } | 192 | public string HttpMethod { get { return m_httpMethod; } } |
193 | public string Path { get { return m_path; } } | 193 | public string Path { get { return m_path; } } |
194 | 194 | ||
195 | string m_contentType; | 195 | string m_contentType; |
196 | string m_httpMethod; | 196 | string m_httpMethod; |
197 | string m_path; | 197 | string m_path; |
198 | UserLoginService m_loginService; | 198 | UserLoginService m_loginService; |
199 | ProviderMemoryStore m_openidStore = new ProviderMemoryStore(); | 199 | ProviderMemoryStore m_openidStore = new ProviderMemoryStore(); |
200 | 200 | ||
201 | /// <summary> | 201 | /// <summary> |
202 | /// Constructor | 202 | /// Constructor |
203 | /// </summary> | 203 | /// </summary> |
204 | public OpenIdStreamHandler(string httpMethod, string path, UserLoginService loginService) | 204 | public OpenIdStreamHandler(string httpMethod, string path, UserLoginService loginService) |
205 | { | 205 | { |
206 | m_loginService = loginService; | 206 | m_loginService = loginService; |
207 | m_httpMethod = httpMethod; | 207 | m_httpMethod = httpMethod; |
208 | m_path = path; | 208 | m_path = path; |
209 | 209 | ||
210 | m_contentType = "text/html"; | 210 | m_contentType = "text/html"; |
211 | } | 211 | } |
212 | 212 | ||
213 | /// <summary> | 213 | /// <summary> |
214 | /// Handles all GET and POST requests for OpenID identifier pages and endpoint | 214 | /// Handles all GET and POST requests for OpenID identifier pages and endpoint |
215 | /// server communication | 215 | /// server communication |
216 | /// </summary> | 216 | /// </summary> |
217 | public void Handle(string path, Stream request, Stream response, OSHttpRequest httpRequest, OSHttpResponse httpResponse) | 217 | public void Handle(string path, Stream request, Stream response, OSHttpRequest httpRequest, OSHttpResponse httpResponse) |
218 | { | 218 | { |
219 | Uri providerEndpoint = new Uri(String.Format("{0}://{1}{2}", httpRequest.Url.Scheme, httpRequest.Url.Authority, httpRequest.Url.AbsolutePath)); | 219 | Uri providerEndpoint = new Uri(String.Format("{0}://{1}{2}", httpRequest.Url.Scheme, httpRequest.Url.Authority, httpRequest.Url.AbsolutePath)); |
220 | 220 | ||
221 | // Defult to returning HTML content | 221 | // Defult to returning HTML content |
222 | m_contentType = "text/html"; | 222 | m_contentType = "text/html"; |
223 | 223 | ||
224 | try | 224 | try |
225 | { | 225 | { |
226 | NameValueCollection postQuery = HttpUtility.ParseQueryString(new StreamReader(httpRequest.InputStream).ReadToEnd()); | 226 | NameValueCollection postQuery = HttpUtility.ParseQueryString(new StreamReader(httpRequest.InputStream).ReadToEnd()); |
227 | NameValueCollection getQuery = HttpUtility.ParseQueryString(httpRequest.Url.Query); | 227 | NameValueCollection getQuery = HttpUtility.ParseQueryString(httpRequest.Url.Query); |
228 | NameValueCollection openIdQuery = (postQuery.GetValues("openid.mode") != null ? postQuery : getQuery); | 228 | NameValueCollection openIdQuery = (postQuery.GetValues("openid.mode") != null ? postQuery : getQuery); |
229 | 229 | ||
230 | OpenIdProvider provider = new OpenIdProvider(m_openidStore, providerEndpoint, httpRequest.Url, openIdQuery); | 230 | OpenIdProvider provider = new OpenIdProvider(m_openidStore, providerEndpoint, httpRequest.Url, openIdQuery); |
231 | 231 | ||
232 | if (provider.Request != null) | 232 | if (provider.Request != null) |
233 | { | 233 | { |
234 | if (!provider.Request.IsResponseReady && provider.Request is IAuthenticationRequest) | 234 | if (!provider.Request.IsResponseReady && provider.Request is IAuthenticationRequest) |
235 | { | 235 | { |
236 | IAuthenticationRequest authRequest = (IAuthenticationRequest)provider.Request; | 236 | IAuthenticationRequest authRequest = (IAuthenticationRequest)provider.Request; |
237 | string[] passwordValues = postQuery.GetValues("pass"); | 237 | string[] passwordValues = postQuery.GetValues("pass"); |
238 | 238 | ||
239 | UserProfileData profile; | 239 | UserProfileData profile; |
240 | if (TryGetProfile(new Uri(authRequest.ClaimedIdentifier.ToString()), out profile)) | 240 | if (TryGetProfile(new Uri(authRequest.ClaimedIdentifier.ToString()), out profile)) |
241 | { | 241 | { |
242 | // Check for form POST data | 242 | // Check for form POST data |
243 | if (passwordValues != null && passwordValues.Length == 1) | 243 | if (passwordValues != null && passwordValues.Length == 1) |
244 | { | 244 | { |
245 | if (profile != null && m_loginService.AuthenticateUser(profile, passwordValues[0])) | 245 | if (profile != null && m_loginService.AuthenticateUser(profile, passwordValues[0])) |
246 | authRequest.IsAuthenticated = true; | 246 | authRequest.IsAuthenticated = true; |
247 | else | 247 | else |
248 | authRequest.IsAuthenticated = false; | 248 | authRequest.IsAuthenticated = false; |
249 | } | 249 | } |
250 | else | 250 | else |
251 | { | 251 | { |
252 | // Authentication was requested, send the client a login form | 252 | // Authentication was requested, send the client a login form |
253 | using (StreamWriter writer = new StreamWriter(response)) | 253 | using (StreamWriter writer = new StreamWriter(response)) |
254 | writer.Write(String.Format(LOGIN_PAGE, profile.FirstName, profile.SurName)); | 254 | writer.Write(String.Format(LOGIN_PAGE, profile.FirstName, profile.SurName)); |
255 | return; | 255 | return; |
256 | } | 256 | } |
257 | } | 257 | } |
258 | else | 258 | else |
259 | { | 259 | { |
260 | // Cannot find an avatar matching the claimed identifier | 260 | // Cannot find an avatar matching the claimed identifier |
261 | authRequest.IsAuthenticated = false; | 261 | authRequest.IsAuthenticated = false; |
262 | } | 262 | } |
263 | } | 263 | } |
264 | 264 | ||
265 | // Add OpenID headers to the response | 265 | // Add OpenID headers to the response |
266 | foreach (string key in provider.Request.Response.Headers.Keys) | 266 | foreach (string key in provider.Request.Response.Headers.Keys) |
267 | httpResponse.AddHeader(key, provider.Request.Response.Headers[key]); | 267 | httpResponse.AddHeader(key, provider.Request.Response.Headers[key]); |
268 | 268 | ||
269 | string[] contentTypeValues = provider.Request.Response.Headers.GetValues("Content-Type"); | 269 | string[] contentTypeValues = provider.Request.Response.Headers.GetValues("Content-Type"); |
270 | if (contentTypeValues != null && contentTypeValues.Length == 1) | 270 | if (contentTypeValues != null && contentTypeValues.Length == 1) |
271 | m_contentType = contentTypeValues[0]; | 271 | m_contentType = contentTypeValues[0]; |
272 | 272 | ||
273 | // Set the response code and document body based on the OpenID result | 273 | // Set the response code and document body based on the OpenID result |
274 | httpResponse.StatusCode = (int)provider.Request.Response.Code; | 274 | httpResponse.StatusCode = (int)provider.Request.Response.Code; |
275 | response.Write(provider.Request.Response.Body, 0, provider.Request.Response.Body.Length); | 275 | response.Write(provider.Request.Response.Body, 0, provider.Request.Response.Body.Length); |
276 | response.Close(); | 276 | response.Close(); |
277 | } | 277 | } |
278 | else if (httpRequest.Url.AbsolutePath.Contains("/openid/server")) | 278 | else if (httpRequest.Url.AbsolutePath.Contains("/openid/server")) |
279 | { | 279 | { |
280 | // Standard HTTP GET was made on the OpenID endpoint, send the client the default error page | 280 | // Standard HTTP GET was made on the OpenID endpoint, send the client the default error page |
281 | using (StreamWriter writer = new StreamWriter(response)) | 281 | using (StreamWriter writer = new StreamWriter(response)) |
282 | writer.Write(ENDPOINT_PAGE); | 282 | writer.Write(ENDPOINT_PAGE); |
283 | } | 283 | } |
284 | else | 284 | else |
285 | { | 285 | { |
286 | // Try and lookup this avatar | 286 | // Try and lookup this avatar |
287 | UserProfileData profile; | 287 | UserProfileData profile; |
288 | if (TryGetProfile(httpRequest.Url, out profile)) | 288 | if (TryGetProfile(httpRequest.Url, out profile)) |
289 | { | 289 | { |
290 | using (StreamWriter writer = new StreamWriter(response)) | 290 | using (StreamWriter writer = new StreamWriter(response)) |
291 | { | 291 | { |
292 | // TODO: Print out a full profile page for this avatar | 292 | // TODO: Print out a full profile page for this avatar |
293 | writer.Write(String.Format(OPENID_PAGE, httpRequest.Url.Scheme, | 293 | writer.Write(String.Format(OPENID_PAGE, httpRequest.Url.Scheme, |
294 | httpRequest.Url.Authority, profile.FirstName, profile.SurName)); | 294 | httpRequest.Url.Authority, profile.FirstName, profile.SurName)); |
295 | } | 295 | } |
296 | } | 296 | } |
297 | else | 297 | else |
298 | { | 298 | { |
299 | // Couldn't parse an avatar name, or couldn't find the avatar in the user server | 299 | // Couldn't parse an avatar name, or couldn't find the avatar in the user server |
300 | using (StreamWriter writer = new StreamWriter(response)) | 300 | using (StreamWriter writer = new StreamWriter(response)) |
301 | writer.Write(INVALID_OPENID_PAGE); | 301 | writer.Write(INVALID_OPENID_PAGE); |
302 | } | 302 | } |
303 | } | 303 | } |
304 | } | 304 | } |
305 | catch (Exception ex) | 305 | catch (Exception ex) |
306 | { | 306 | { |
307 | httpResponse.StatusCode = (int)HttpStatusCode.InternalServerError; | 307 | httpResponse.StatusCode = (int)HttpStatusCode.InternalServerError; |
308 | using (StreamWriter writer = new StreamWriter(response)) | 308 | using (StreamWriter writer = new StreamWriter(response)) |
309 | writer.Write(ex.Message); | 309 | writer.Write(ex.Message); |
310 | } | 310 | } |
311 | } | 311 | } |
312 | 312 | ||
313 | /// <summary> | 313 | /// <summary> |
314 | /// Parse a URL with a relative path of the form /users/First_Last and try to | 314 | /// Parse a URL with a relative path of the form /users/First_Last and try to |
315 | /// retrieve the profile matching that avatar name | 315 | /// retrieve the profile matching that avatar name |
316 | /// </summary> | 316 | /// </summary> |
317 | /// <param name="requestUrl">URL to parse for an avatar name</param> | 317 | /// <param name="requestUrl">URL to parse for an avatar name</param> |
318 | /// <param name="profile">Profile data for the avatar</param> | 318 | /// <param name="profile">Profile data for the avatar</param> |
319 | /// <returns>True if the parse and lookup were successful, otherwise false</returns> | 319 | /// <returns>True if the parse and lookup were successful, otherwise false</returns> |
320 | bool TryGetProfile(Uri requestUrl, out UserProfileData profile) | 320 | bool TryGetProfile(Uri requestUrl, out UserProfileData profile) |
321 | { | 321 | { |
322 | if (requestUrl.Segments.Length == 3 && requestUrl.Segments[1] == "users/") | 322 | if (requestUrl.Segments.Length == 3 && requestUrl.Segments[1] == "users/") |
323 | { | 323 | { |
324 | // Parse the avatar name from the path | 324 | // Parse the avatar name from the path |
325 | string username = requestUrl.Segments[requestUrl.Segments.Length - 1]; | 325 | string username = requestUrl.Segments[requestUrl.Segments.Length - 1]; |
326 | string[] name = username.Split('_'); | 326 | string[] name = username.Split('_'); |
327 | 327 | ||
328 | if (name.Length == 2) | 328 | if (name.Length == 2) |
329 | { | 329 | { |
330 | profile = m_loginService.GetTheUser(name[0], name[1]); | 330 | profile = m_loginService.GetTheUser(name[0], name[1]); |
331 | return (profile != null); | 331 | return (profile != null); |
332 | } | 332 | } |
333 | } | 333 | } |
334 | 334 | ||
335 | profile = null; | 335 | profile = null; |
336 | return false; | 336 | return false; |
337 | } | 337 | } |
338 | } | 338 | } |
339 | } | 339 | } |
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs index 962071b..36eaf95 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs | |||
@@ -8248,7 +8248,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
8248 | ap.Data = new AvatarPicksReplyPacket.DataBlock[picks.Count]; | 8248 | ap.Data = new AvatarPicksReplyPacket.DataBlock[picks.Count]; |
8249 | 8249 | ||
8250 | int i = 0; | 8250 | int i = 0; |
8251 | foreach(KeyValuePair<UUID, string> pick in picks) | 8251 | foreach (KeyValuePair<UUID, string> pick in picks) |
8252 | { | 8252 | { |
8253 | ap.Data[i] = new AvatarPicksReplyPacket.DataBlock(); | 8253 | ap.Data[i] = new AvatarPicksReplyPacket.DataBlock(); |
8254 | ap.Data[i].PickID = pick.Key; | 8254 | ap.Data[i].PickID = pick.Key; |
@@ -8272,7 +8272,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
8272 | ac.Data = new AvatarClassifiedReplyPacket.DataBlock[classifieds.Count]; | 8272 | ac.Data = new AvatarClassifiedReplyPacket.DataBlock[classifieds.Count]; |
8273 | 8273 | ||
8274 | int i = 0; | 8274 | int i = 0; |
8275 | foreach(KeyValuePair<UUID, string> classified in classifieds) | 8275 | foreach (KeyValuePair<UUID, string> classified in classifieds) |
8276 | { | 8276 | { |
8277 | ac.Data[i] = new AvatarClassifiedReplyPacket.DataBlock(); | 8277 | ac.Data[i] = new AvatarClassifiedReplyPacket.DataBlock(); |
8278 | ac.Data[i].ClassifiedID = classified.Key; | 8278 | ac.Data[i].ClassifiedID = classified.Key; |
diff --git a/OpenSim/Region/Environment/Interfaces/IInterregionComms.cs b/OpenSim/Region/Environment/Interfaces/IInterregionComms.cs index 7964d98..b70e885 100644 --- a/OpenSim/Region/Environment/Interfaces/IInterregionComms.cs +++ b/OpenSim/Region/Environment/Interfaces/IInterregionComms.cs | |||
@@ -1,47 +1,47 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (c) Contributors, http://opensimulator.org/ | 2 | * Copyright (c) Contributors, http://opensimulator.org/ |
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | 3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. |
4 | * | 4 | * |
5 | * Redistribution and use in source and binary forms, with or without | 5 | * Redistribution and use in source and binary forms, with or without |
6 | * modification, are permitted provided that the following conditions are met: | 6 | * modification, are permitted provided that the following conditions are met: |
7 | * * Redistributions of source code must retain the above copyright | 7 | * * Redistributions of source code must retain the above copyright |
8 | * notice, this list of conditions and the following disclaimer. | 8 | * notice, this list of conditions and the following disclaimer. |
9 | * * Redistributions in binary form must reproduce the above copyright | 9 | * * Redistributions in binary form must reproduce the above copyright |
10 | * notice, this list of conditions and the following disclaimer in the | 10 | * notice, this list of conditions and the following disclaimer in the |
11 | * documentation and/or other materials provided with the distribution. | 11 | * documentation and/or other materials provided with the distribution. |
12 | * * Neither the name of the OpenSim Project nor the | 12 | * * Neither the name of the OpenSim Project nor the |
13 | * names of its contributors may be used to endorse or promote products | 13 | * names of its contributors may be used to endorse or promote products |
14 | * derived from this software without specific prior written permission. | 14 | * derived from this software without specific prior written permission. |
15 | * | 15 | * |
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY | 16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY |
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | 17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | 18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | 19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY |
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | 20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES |
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | 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 | 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 | 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 | 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. | 25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
26 | */ | 26 | */ |
27 | 27 | ||
28 | using System; | 28 | using System; |
29 | using OpenSim.Framework; | 29 | using OpenSim.Framework; |
30 | using OpenMetaverse; | 30 | using OpenMetaverse; |
31 | 31 | ||
32 | namespace OpenSim.Region.Environment.Interfaces | 32 | namespace OpenSim.Region.Environment.Interfaces |
33 | { | 33 | { |
34 | public delegate bool ChildAgentUpdateReceived(AgentData data); | 34 | public delegate bool ChildAgentUpdateReceived(AgentData data); |
35 | 35 | ||
36 | public interface IInterregionCommsOut | 36 | public interface IInterregionCommsOut |
37 | { | 37 | { |
38 | bool SendChildAgentUpdate(ulong regionHandle, AgentData data); | 38 | bool SendChildAgentUpdate(ulong regionHandle, AgentData data); |
39 | } | 39 | } |
40 | 40 | ||
41 | // This may not be needed, but having it here for now. | 41 | // This may not be needed, but having it here for now. |
42 | public interface IInterregionCommsIn | 42 | public interface IInterregionCommsIn |
43 | { | 43 | { |
44 | event ChildAgentUpdateReceived OnChildAgentUpdate; | 44 | event ChildAgentUpdateReceived OnChildAgentUpdate; |
45 | } | 45 | } |
46 | 46 | ||
47 | } | 47 | } |
diff --git a/OpenSim/Region/Environment/Modules/Communications/Local/LocalInterregionComms.cs b/OpenSim/Region/Environment/Modules/Communications/Local/LocalInterregionComms.cs index 6812e6d..dc2e3de 100644 --- a/OpenSim/Region/Environment/Modules/Communications/Local/LocalInterregionComms.cs +++ b/OpenSim/Region/Environment/Modules/Communications/Local/LocalInterregionComms.cs | |||
@@ -1,140 +1,140 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (c) Contributors, http://opensimulator.org/ | 2 | * Copyright (c) Contributors, http://opensimulator.org/ |
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | 3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. |
4 | * | 4 | * |
5 | * Redistribution and use in source and binary forms, with or without | 5 | * Redistribution and use in source and binary forms, with or without |
6 | * modification, are permitted provided that the following conditions are met: | 6 | * modification, are permitted provided that the following conditions are met: |
7 | * * Redistributions of source code must retain the above copyright | 7 | * * Redistributions of source code must retain the above copyright |
8 | * notice, this list of conditions and the following disclaimer. | 8 | * notice, this list of conditions and the following disclaimer. |
9 | * * Redistributions in binary form must reproduce the above copyright | 9 | * * Redistributions in binary form must reproduce the above copyright |
10 | * notice, this list of conditions and the following disclaimer in the | 10 | * notice, this list of conditions and the following disclaimer in the |
11 | * documentation and/or other materials provided with the distribution. | 11 | * documentation and/or other materials provided with the distribution. |
12 | * * Neither the name of the OpenSim Project nor the | 12 | * * Neither the name of the OpenSim Project nor the |
13 | * names of its contributors may be used to endorse or promote products | 13 | * names of its contributors may be used to endorse or promote products |
14 | * derived from this software without specific prior written permission. | 14 | * derived from this software without specific prior written permission. |
15 | * | 15 | * |
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY | 16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY |
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | 17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | 18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | 19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY |
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | 20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES |
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | 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 | 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 | 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 | 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. | 25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
26 | */ | 26 | */ |
27 | using System; | 27 | using System; |
28 | using System.Collections; | 28 | using System.Collections; |
29 | using System.Collections.Generic; | 29 | using System.Collections.Generic; |
30 | using System.Net; | 30 | using System.Net; |
31 | using System.Net.Sockets; | 31 | using System.Net.Sockets; |
32 | using System.Reflection; | 32 | using System.Reflection; |
33 | using System.Threading; | 33 | using System.Threading; |
34 | using System.Xml; | 34 | using System.Xml; |
35 | using OpenMetaverse; | 35 | using OpenMetaverse; |
36 | using log4net; | 36 | using log4net; |
37 | using Nini.Config; | 37 | using Nini.Config; |
38 | using Nwc.XmlRpc; | 38 | using Nwc.XmlRpc; |
39 | using OpenSim.Framework; | 39 | using OpenSim.Framework; |
40 | using OpenSim.Framework.Communications.Cache; | 40 | using OpenSim.Framework.Communications.Cache; |
41 | using OpenSim.Region.Environment.Interfaces; | 41 | using OpenSim.Region.Environment.Interfaces; |
42 | using OpenSim.Region.Interfaces; | 42 | using OpenSim.Region.Interfaces; |
43 | using OpenSim.Region.Environment.Scenes; | 43 | using OpenSim.Region.Environment.Scenes; |
44 | 44 | ||
45 | namespace OpenSim.Region.Environment.Modules.Communications.Local | 45 | namespace OpenSim.Region.Environment.Modules.Communications.Local |
46 | { | 46 | { |
47 | public class LocalInterregionComms : IRegionModule, IInterregionCommsOut, IInterregionCommsIn | 47 | public class LocalInterregionComms : IRegionModule, IInterregionCommsOut, IInterregionCommsIn |
48 | { | 48 | { |
49 | private bool m_enabled = false; | 49 | private bool m_enabled = false; |
50 | 50 | ||
51 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | 51 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); |
52 | private List<Scene> m_sceneList = new List<Scene>(); | 52 | private List<Scene> m_sceneList = new List<Scene>(); |
53 | 53 | ||
54 | #region Events | 54 | #region Events |
55 | public event ChildAgentUpdateReceived OnChildAgentUpdate; | 55 | public event ChildAgentUpdateReceived OnChildAgentUpdate; |
56 | 56 | ||
57 | #endregion /* Events */ | 57 | #endregion /* Events */ |
58 | 58 | ||
59 | #region IRegionModule | 59 | #region IRegionModule |
60 | 60 | ||
61 | public void Initialise(Scene scene, IConfigSource config) | 61 | public void Initialise(Scene scene, IConfigSource config) |
62 | { | 62 | { |
63 | if (m_sceneList.Count == 0) | 63 | if (m_sceneList.Count == 0) |
64 | { | 64 | { |
65 | IConfig startupConfig = config.Configs["Communications"]; | 65 | IConfig startupConfig = config.Configs["Communications"]; |
66 | 66 | ||
67 | if ((startupConfig == null) || | 67 | if ((startupConfig == null) || |
68 | (startupConfig != null) && (startupConfig.GetString("InterregionComms", "RESTCommms") == "LocalComms")) | 68 | (startupConfig != null) && (startupConfig.GetString("InterregionComms", "RESTCommms") == "LocalComms")) |
69 | m_enabled = true; | 69 | m_enabled = true; |
70 | } | 70 | } |
71 | 71 | ||
72 | if (!m_enabled) | 72 | if (!m_enabled) |
73 | return; | 73 | return; |
74 | 74 | ||
75 | Init(scene); | 75 | Init(scene); |
76 | 76 | ||
77 | } | 77 | } |
78 | 78 | ||
79 | public void PostInitialise() | 79 | public void PostInitialise() |
80 | { | 80 | { |
81 | } | 81 | } |
82 | 82 | ||
83 | public void Close() | 83 | public void Close() |
84 | { | 84 | { |
85 | } | 85 | } |
86 | 86 | ||
87 | public string Name | 87 | public string Name |
88 | { | 88 | { |
89 | get { return "LocalInterregionCommsModule"; } | 89 | get { return "LocalInterregionCommsModule"; } |
90 | } | 90 | } |
91 | 91 | ||
92 | public bool IsSharedModule | 92 | public bool IsSharedModule |
93 | { | 93 | { |
94 | get { return true; } | 94 | get { return true; } |
95 | } | 95 | } |
96 | /// <summary> | 96 | /// <summary> |
97 | /// Can be called from other modules. | 97 | /// Can be called from other modules. |
98 | /// </summary> | 98 | /// </summary> |
99 | /// <param name="scene"></param> | 99 | /// <param name="scene"></param> |
100 | public void Init(Scene scene) | 100 | public void Init(Scene scene) |
101 | { | 101 | { |
102 | if (!m_sceneList.Contains(scene)) | 102 | if (!m_sceneList.Contains(scene)) |
103 | { | 103 | { |
104 | lock (m_sceneList) | 104 | lock (m_sceneList) |
105 | { | 105 | { |
106 | m_sceneList.Add(scene); | 106 | m_sceneList.Add(scene); |
107 | if (m_enabled) | 107 | if (m_enabled) |
108 | scene.RegisterModuleInterface<IInterregionCommsOut>(this); | 108 | scene.RegisterModuleInterface<IInterregionCommsOut>(this); |
109 | scene.RegisterModuleInterface<IInterregionCommsIn>(this); | 109 | scene.RegisterModuleInterface<IInterregionCommsIn>(this); |
110 | } | 110 | } |
111 | 111 | ||
112 | } | 112 | } |
113 | } | 113 | } |
114 | 114 | ||
115 | #endregion /* IRegionModule */ | 115 | #endregion /* IRegionModule */ |
116 | 116 | ||
117 | #region IInterregionComms | 117 | #region IInterregionComms |
118 | 118 | ||
119 | public bool SendChildAgentUpdate(ulong regionHandle, AgentData cAgentData) | 119 | public bool SendChildAgentUpdate(ulong regionHandle, AgentData cAgentData) |
120 | { | 120 | { |
121 | lock (m_sceneList) | 121 | lock (m_sceneList) |
122 | { | 122 | { |
123 | foreach (Scene s in m_sceneList) | 123 | foreach (Scene s in m_sceneList) |
124 | { | 124 | { |
125 | if (s.RegionInfo.RegionHandle == regionHandle) | 125 | if (s.RegionInfo.RegionHandle == regionHandle) |
126 | { | 126 | { |
127 | //m_log.Debug("[LOCAL COMMS]: Found region to send ChildAgentUpdate"); | 127 | //m_log.Debug("[LOCAL COMMS]: Found region to send ChildAgentUpdate"); |
128 | return s.IncomingChildAgentDataUpdate(cAgentData); | 128 | return s.IncomingChildAgentDataUpdate(cAgentData); |
129 | //if (OnChildAgentUpdate != null) | 129 | //if (OnChildAgentUpdate != null) |
130 | // return OnChildAgentUpdate(cAgentData); | 130 | // return OnChildAgentUpdate(cAgentData); |
131 | } | 131 | } |
132 | } | 132 | } |
133 | } | 133 | } |
134 | m_log.Debug("[LOCAL COMMS]: region not found for ChildAgentUpdate"); | 134 | m_log.Debug("[LOCAL COMMS]: region not found for ChildAgentUpdate"); |
135 | return false; | 135 | return false; |
136 | } | 136 | } |
137 | 137 | ||
138 | #endregion /* IInterregionComms */ | 138 | #endregion /* IInterregionComms */ |
139 | } | 139 | } |
140 | } | 140 | } |
diff --git a/OpenSim/Region/Environment/Modules/Communications/REST/HGInterregionComms.cs b/OpenSim/Region/Environment/Modules/Communications/REST/HGInterregionComms.cs index a553136..a94ca8b 100644 --- a/OpenSim/Region/Environment/Modules/Communications/REST/HGInterregionComms.cs +++ b/OpenSim/Region/Environment/Modules/Communications/REST/HGInterregionComms.cs | |||
@@ -1,86 +1,86 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (c) Contributors, http://opensimulator.org/ | 2 | * Copyright (c) Contributors, http://opensimulator.org/ |
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | 3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. |
4 | * | 4 | * |
5 | * Redistribution and use in source and binary forms, with or without | 5 | * Redistribution and use in source and binary forms, with or without |
6 | * modification, are permitted provided that the following conditions are met: | 6 | * modification, are permitted provided that the following conditions are met: |
7 | * * Redistributions of source code must retain the above copyright | 7 | * * Redistributions of source code must retain the above copyright |
8 | * notice, this list of conditions and the following disclaimer. | 8 | * notice, this list of conditions and the following disclaimer. |
9 | * * Redistributions in binary form must reproduce the above copyright | 9 | * * Redistributions in binary form must reproduce the above copyright |
10 | * notice, this list of conditions and the following disclaimer in the | 10 | * notice, this list of conditions and the following disclaimer in the |
11 | * documentation and/or other materials provided with the distribution. | 11 | * documentation and/or other materials provided with the distribution. |
12 | * * Neither the name of the OpenSim Project nor the | 12 | * * Neither the name of the OpenSim Project nor the |
13 | * names of its contributors may be used to endorse or promote products | 13 | * names of its contributors may be used to endorse or promote products |
14 | * derived from this software without specific prior written permission. | 14 | * derived from this software without specific prior written permission. |
15 | * | 15 | * |
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY | 16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY |
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | 17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | 18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | 19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY |
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | 20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES |
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | 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 | 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 | 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 | 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. | 25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
26 | */ | 26 | */ |
27 | using System; | 27 | using System; |
28 | using System.Collections; | 28 | using System.Collections; |
29 | using System.Collections.Generic; | 29 | using System.Collections.Generic; |
30 | using System.Reflection; | 30 | using System.Reflection; |
31 | using log4net; | 31 | using log4net; |
32 | using Nini.Config; | 32 | using Nini.Config; |
33 | using OpenSim.Framework; | 33 | using OpenSim.Framework; |
34 | using OpenSim.Framework.Communications; | 34 | using OpenSim.Framework.Communications; |
35 | using OpenSim.Framework.Communications.Cache; | 35 | using OpenSim.Framework.Communications.Cache; |
36 | using OpenSim.Region.Environment.Interfaces; | 36 | using OpenSim.Region.Environment.Interfaces; |
37 | using OpenSim.Region.Interfaces; | 37 | using OpenSim.Region.Interfaces; |
38 | using OpenSim.Region.Environment.Scenes; | 38 | using OpenSim.Region.Environment.Scenes; |
39 | using OpenSim.Region.Environment.Scenes.Hypergrid; | 39 | using OpenSim.Region.Environment.Scenes.Hypergrid; |
40 | 40 | ||
41 | namespace OpenSim.Region.Environment.Modules.Communications.REST | 41 | namespace OpenSim.Region.Environment.Modules.Communications.REST |
42 | { | 42 | { |
43 | public class HGInterregionComms : RESTInterregionComms | 43 | public class HGInterregionComms : RESTInterregionComms |
44 | { | 44 | { |
45 | private static bool initialized = false; | 45 | private static bool initialized = false; |
46 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | 46 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); |
47 | 47 | ||
48 | #region IRegionModule | 48 | #region IRegionModule |
49 | 49 | ||
50 | public override void Initialise(Scene scene, IConfigSource config) | 50 | public override void Initialise(Scene scene, IConfigSource config) |
51 | { | 51 | { |
52 | if (!initialized) | 52 | if (!initialized) |
53 | { | 53 | { |
54 | initialized = true; | 54 | initialized = true; |
55 | IConfig startupConfig = config.Configs["Communications"]; | 55 | IConfig startupConfig = config.Configs["Communications"]; |
56 | if ((startupConfig != null) && (startupConfig.GetString("InterregionComms", "RESTCommms") == "HGRESTComms")) | 56 | if ((startupConfig != null) && (startupConfig.GetString("InterregionComms", "RESTCommms") == "HGRESTComms")) |
57 | { | 57 | { |
58 | m_enabled = true; | 58 | m_enabled = true; |
59 | InitOnce(scene); | 59 | InitOnce(scene); |
60 | } | 60 | } |
61 | } | 61 | } |
62 | 62 | ||
63 | if (!m_enabled) | 63 | if (!m_enabled) |
64 | return; | 64 | return; |
65 | 65 | ||
66 | InitEach(scene); | 66 | InitEach(scene); |
67 | } | 67 | } |
68 | 68 | ||
69 | public override string Name | 69 | public override string Name |
70 | { | 70 | { |
71 | get { return "HGInterregionCommsModule"; } | 71 | get { return "HGInterregionCommsModule"; } |
72 | } | 72 | } |
73 | 73 | ||
74 | #endregion /* IRegionModule */ | 74 | #endregion /* IRegionModule */ |
75 | 75 | ||
76 | #region Misc | 76 | #region Misc |
77 | 77 | ||
78 | protected override ulong GetRegionHandle(RegionInfo region) | 78 | protected override ulong GetRegionHandle(RegionInfo region) |
79 | { | 79 | { |
80 | return ((HGSceneCommunicationService)(m_aScene.SceneGridService)).m_hg.FindRegionHandle(region.RegionHandle); | 80 | return ((HGSceneCommunicationService)(m_aScene.SceneGridService)).m_hg.FindRegionHandle(region.RegionHandle); |
81 | } | 81 | } |
82 | 82 | ||
83 | #endregion /* Misc */ | 83 | #endregion /* Misc */ |
84 | 84 | ||
85 | } | 85 | } |
86 | } | 86 | } |
diff --git a/OpenSim/Region/Environment/Modules/Communications/REST/RESTInterregionComms.cs b/OpenSim/Region/Environment/Modules/Communications/REST/RESTInterregionComms.cs index 4c2308e..022f635 100644 --- a/OpenSim/Region/Environment/Modules/Communications/REST/RESTInterregionComms.cs +++ b/OpenSim/Region/Environment/Modules/Communications/REST/RESTInterregionComms.cs | |||
@@ -1,296 +1,296 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (c) Contributors, http://opensimulator.org/ | 2 | * Copyright (c) Contributors, http://opensimulator.org/ |
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | 3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. |
4 | * | 4 | * |
5 | * Redistribution and use in source and binary forms, with or without | 5 | * Redistribution and use in source and binary forms, with or without |
6 | * modification, are permitted provided that the following conditions are met: | 6 | * modification, are permitted provided that the following conditions are met: |
7 | * * Redistributions of source code must retain the above copyright | 7 | * * Redistributions of source code must retain the above copyright |
8 | * notice, this list of conditions and the following disclaimer. | 8 | * notice, this list of conditions and the following disclaimer. |
9 | * * Redistributions in binary form must reproduce the above copyright | 9 | * * Redistributions in binary form must reproduce the above copyright |
10 | * notice, this list of conditions and the following disclaimer in the | 10 | * notice, this list of conditions and the following disclaimer in the |
11 | * documentation and/or other materials provided with the distribution. | 11 | * documentation and/or other materials provided with the distribution. |
12 | * * Neither the name of the OpenSim Project nor the | 12 | * * Neither the name of the OpenSim Project nor the |
13 | * names of its contributors may be used to endorse or promote products | 13 | * names of its contributors may be used to endorse or promote products |
14 | * derived from this software without specific prior written permission. | 14 | * derived from this software without specific prior written permission. |
15 | * | 15 | * |
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY | 16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY |
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | 17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | 18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | 19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY |
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | 20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES |
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | 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 | 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 | 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 | 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. | 25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
26 | */ | 26 | */ |
27 | using System; | 27 | using System; |
28 | using System.Collections; | 28 | using System.Collections; |
29 | using System.Collections.Generic; | 29 | using System.Collections.Generic; |
30 | using System.IO; | 30 | using System.IO; |
31 | using System.Net; | 31 | using System.Net; |
32 | using System.Net.Sockets; | 32 | using System.Net.Sockets; |
33 | using System.Reflection; | 33 | using System.Reflection; |
34 | using System.Threading; | 34 | using System.Threading; |
35 | using System.Xml; | 35 | using System.Xml; |
36 | using OpenMetaverse; | 36 | using OpenMetaverse; |
37 | using OpenMetaverse.StructuredData; | 37 | using OpenMetaverse.StructuredData; |
38 | using log4net; | 38 | using log4net; |
39 | using Nini.Config; | 39 | using Nini.Config; |
40 | using Nwc.XmlRpc; | 40 | using Nwc.XmlRpc; |
41 | using OpenSim.Framework; | 41 | using OpenSim.Framework; |
42 | using OpenSim.Framework.Communications; | 42 | using OpenSim.Framework.Communications; |
43 | using OpenSim.Framework.Communications.Cache; | 43 | using OpenSim.Framework.Communications.Cache; |
44 | using OpenSim.Region.Environment.Interfaces; | 44 | using OpenSim.Region.Environment.Interfaces; |
45 | using OpenSim.Region.Interfaces; | 45 | using OpenSim.Region.Interfaces; |
46 | using OpenSim.Region.Environment.Scenes; | 46 | using OpenSim.Region.Environment.Scenes; |
47 | using OpenSim.Region.Environment.Modules.Communications.Local; | 47 | using OpenSim.Region.Environment.Modules.Communications.Local; |
48 | 48 | ||
49 | namespace OpenSim.Region.Environment.Modules.Communications.REST | 49 | namespace OpenSim.Region.Environment.Modules.Communications.REST |
50 | { | 50 | { |
51 | public class RESTInterregionComms : IRegionModule, IInterregionCommsOut | 51 | public class RESTInterregionComms : IRegionModule, IInterregionCommsOut |
52 | { | 52 | { |
53 | private static bool initialized = false; | 53 | private static bool initialized = false; |
54 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | 54 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); |
55 | 55 | ||
56 | protected bool m_enabled = false; | 56 | protected bool m_enabled = false; |
57 | protected Scene m_aScene; | 57 | protected Scene m_aScene; |
58 | // RESTInterregionComms does not care about local regions; it delegates that to the Local module | 58 | // RESTInterregionComms does not care about local regions; it delegates that to the Local module |
59 | protected LocalInterregionComms m_localBackend; | 59 | protected LocalInterregionComms m_localBackend; |
60 | 60 | ||
61 | protected CommunicationsManager m_commsManager; | 61 | protected CommunicationsManager m_commsManager; |
62 | 62 | ||
63 | #region IRegionModule | 63 | #region IRegionModule |
64 | 64 | ||
65 | public virtual void Initialise(Scene scene, IConfigSource config) | 65 | public virtual void Initialise(Scene scene, IConfigSource config) |
66 | { | 66 | { |
67 | if (!initialized) | 67 | if (!initialized) |
68 | { | 68 | { |
69 | initialized = true; | 69 | initialized = true; |
70 | IConfig startupConfig = config.Configs["Communications"]; | 70 | IConfig startupConfig = config.Configs["Communications"]; |
71 | if ((startupConfig != null) && (startupConfig.GetString("InterregionComms", "RESTCommms") == "RESTComms")) | 71 | if ((startupConfig != null) && (startupConfig.GetString("InterregionComms", "RESTCommms") == "RESTComms")) |
72 | { | 72 | { |
73 | m_enabled = true; | 73 | m_enabled = true; |
74 | InitOnce(scene); | 74 | InitOnce(scene); |
75 | } | 75 | } |
76 | } | 76 | } |
77 | 77 | ||
78 | if (!m_enabled) | 78 | if (!m_enabled) |
79 | return; | 79 | return; |
80 | 80 | ||
81 | InitEach(scene); | 81 | InitEach(scene); |
82 | 82 | ||
83 | } | 83 | } |
84 | 84 | ||
85 | public virtual void PostInitialise() | 85 | public virtual void PostInitialise() |
86 | { | 86 | { |
87 | if (m_enabled) | 87 | if (m_enabled) |
88 | AddHTTPHandlers(); | 88 | AddHTTPHandlers(); |
89 | } | 89 | } |
90 | 90 | ||
91 | public virtual void Close() | 91 | public virtual void Close() |
92 | { | 92 | { |
93 | } | 93 | } |
94 | 94 | ||
95 | public virtual string Name | 95 | public virtual string Name |
96 | { | 96 | { |
97 | get { return "RESTInterregionCommsModule"; } | 97 | get { return "RESTInterregionCommsModule"; } |
98 | } | 98 | } |
99 | 99 | ||
100 | public virtual bool IsSharedModule | 100 | public virtual bool IsSharedModule |
101 | { | 101 | { |
102 | get { return true; } | 102 | get { return true; } |
103 | } | 103 | } |
104 | 104 | ||
105 | protected virtual void InitEach(Scene scene) | 105 | protected virtual void InitEach(Scene scene) |
106 | { | 106 | { |
107 | m_localBackend.Init(scene); | 107 | m_localBackend.Init(scene); |
108 | scene.RegisterModuleInterface<IInterregionCommsOut>(this); | 108 | scene.RegisterModuleInterface<IInterregionCommsOut>(this); |
109 | } | 109 | } |
110 | 110 | ||
111 | protected virtual void InitOnce(Scene scene) | 111 | protected virtual void InitOnce(Scene scene) |
112 | { | 112 | { |
113 | m_localBackend = new LocalInterregionComms(); | 113 | m_localBackend = new LocalInterregionComms(); |
114 | m_commsManager = scene.CommsManager; | 114 | m_commsManager = scene.CommsManager; |
115 | m_aScene = scene; | 115 | m_aScene = scene; |
116 | } | 116 | } |
117 | 117 | ||
118 | protected virtual void AddHTTPHandlers() | 118 | protected virtual void AddHTTPHandlers() |
119 | { | 119 | { |
120 | m_aScene.AddHTTPHandler("/ChildAgentUpdate/", ChildAgentUpdateHandler); | 120 | m_aScene.AddHTTPHandler("/ChildAgentUpdate/", ChildAgentUpdateHandler); |
121 | } | 121 | } |
122 | 122 | ||
123 | #endregion /* IRegionModule */ | 123 | #endregion /* IRegionModule */ |
124 | 124 | ||
125 | #region IInterregionComms | 125 | #region IInterregionComms |
126 | 126 | ||
127 | public bool SendChildAgentUpdate(ulong regionHandle, AgentData cAgentData) | 127 | public bool SendChildAgentUpdate(ulong regionHandle, AgentData cAgentData) |
128 | { | 128 | { |
129 | // Try local first | 129 | // Try local first |
130 | if (m_localBackend.SendChildAgentUpdate(regionHandle, cAgentData)) | 130 | if (m_localBackend.SendChildAgentUpdate(regionHandle, cAgentData)) |
131 | return true; | 131 | return true; |
132 | 132 | ||
133 | // else do the remote thing | 133 | // else do the remote thing |
134 | RegionInfo regInfo = m_commsManager.GridService.RequestNeighbourInfo(regionHandle); | 134 | RegionInfo regInfo = m_commsManager.GridService.RequestNeighbourInfo(regionHandle); |
135 | if (regInfo != null) | 135 | if (regInfo != null) |
136 | { | 136 | { |
137 | return DoChildAgentUpdateCall(regInfo, cAgentData); | 137 | return DoChildAgentUpdateCall(regInfo, cAgentData); |
138 | } | 138 | } |
139 | 139 | ||
140 | return false; | 140 | return false; |
141 | 141 | ||
142 | } | 142 | } |
143 | 143 | ||
144 | protected bool DoChildAgentUpdateCall(RegionInfo region, AgentData cAgentData) | 144 | protected bool DoChildAgentUpdateCall(RegionInfo region, AgentData cAgentData) |
145 | { | 145 | { |
146 | string uri = "http://" + region.ExternalEndPoint.Address + ":" + region.HttpPort + "/ChildAgentUpdate/"; | 146 | string uri = "http://" + region.ExternalEndPoint.Address + ":" + region.HttpPort + "/ChildAgentUpdate/"; |
147 | //Console.WriteLine(" >>> DoChildAgentUpdateCall <<< " + uri); | 147 | //Console.WriteLine(" >>> DoChildAgentUpdateCall <<< " + uri); |
148 | 148 | ||
149 | WebRequest ChildUpdateRequest = WebRequest.Create(uri); | 149 | WebRequest ChildUpdateRequest = WebRequest.Create(uri); |
150 | ChildUpdateRequest.Method = "PUT"; | 150 | ChildUpdateRequest.Method = "PUT"; |
151 | ChildUpdateRequest.ContentType = "application/json"; | 151 | ChildUpdateRequest.ContentType = "application/json"; |
152 | ChildUpdateRequest.Timeout = 10000; | 152 | ChildUpdateRequest.Timeout = 10000; |
153 | 153 | ||
154 | // Fill it in | 154 | // Fill it in |
155 | OSDMap args = null; | 155 | OSDMap args = null; |
156 | try | 156 | try |
157 | { | 157 | { |
158 | args = cAgentData.PackUpdateMessage(); | 158 | args = cAgentData.PackUpdateMessage(); |
159 | } | 159 | } |
160 | catch (Exception e) | 160 | catch (Exception e) |
161 | { | 161 | { |
162 | m_log.Debug("[REST COMMS]: PackUpdateMessage failed with exception: " + e.Message); | 162 | m_log.Debug("[REST COMMS]: PackUpdateMessage failed with exception: " + e.Message); |
163 | } | 163 | } |
164 | // Add the regionhandle of the destination region | 164 | // Add the regionhandle of the destination region |
165 | ulong regionHandle = GetRegionHandle(region); | 165 | ulong regionHandle = GetRegionHandle(region); |
166 | args["destination_handle"] = OSD.FromString(regionHandle.ToString()); | 166 | args["destination_handle"] = OSD.FromString(regionHandle.ToString()); |
167 | 167 | ||
168 | string strBuffer = ""; | 168 | string strBuffer = ""; |
169 | byte[] buffer = new byte[1]; | 169 | byte[] buffer = new byte[1]; |
170 | try | 170 | try |
171 | { | 171 | { |
172 | strBuffer = OSDParser.SerializeJsonString(args); | 172 | strBuffer = OSDParser.SerializeJsonString(args); |
173 | System.Text.UTF8Encoding str = new System.Text.UTF8Encoding(); | 173 | System.Text.UTF8Encoding str = new System.Text.UTF8Encoding(); |
174 | buffer = str.GetBytes(strBuffer); | 174 | buffer = str.GetBytes(strBuffer); |
175 | 175 | ||
176 | } | 176 | } |
177 | catch (Exception e) | 177 | catch (Exception e) |
178 | { | 178 | { |
179 | m_log.WarnFormat("[OSG2]: Exception thrown on serialization of ChildUpdate: {0}", e.Message); | 179 | m_log.WarnFormat("[OSG2]: Exception thrown on serialization of ChildUpdate: {0}", e.Message); |
180 | // ignore. buffer will be empty, caller should check. | 180 | // ignore. buffer will be empty, caller should check. |
181 | } | 181 | } |
182 | 182 | ||
183 | Stream os = null; | 183 | Stream os = null; |
184 | try | 184 | try |
185 | { // send the Post | 185 | { // send the Post |
186 | ChildUpdateRequest.ContentLength = buffer.Length; //Count bytes to send | 186 | ChildUpdateRequest.ContentLength = buffer.Length; //Count bytes to send |
187 | os = ChildUpdateRequest.GetRequestStream(); | 187 | os = ChildUpdateRequest.GetRequestStream(); |
188 | os.Write(buffer, 0, strBuffer.Length); //Send it | 188 | os.Write(buffer, 0, strBuffer.Length); //Send it |
189 | os.Close(); | 189 | os.Close(); |
190 | //m_log.InfoFormat("[REST COMMS]: Posted ChildAgentUpdate request to remote sim {0}", uri); | 190 | //m_log.InfoFormat("[REST COMMS]: Posted ChildAgentUpdate request to remote sim {0}", uri); |
191 | } | 191 | } |
192 | catch (WebException ex) | 192 | catch (WebException ex) |
193 | { | 193 | { |
194 | //m_log.InfoFormat("[REST COMMS]: Bad send on ChildAgentUpdate {0}", ex.Message); | 194 | //m_log.InfoFormat("[REST COMMS]: Bad send on ChildAgentUpdate {0}", ex.Message); |
195 | 195 | ||
196 | return false; | 196 | return false; |
197 | } | 197 | } |
198 | 198 | ||
199 | // Let's wait for the response | 199 | // Let's wait for the response |
200 | //m_log.Info("[REST COMMS]: Waiting for a reply after ChildAgentUpdate"); | 200 | //m_log.Info("[REST COMMS]: Waiting for a reply after ChildAgentUpdate"); |
201 | string reply = null; | 201 | string reply = null; |
202 | try | 202 | try |
203 | { | 203 | { |
204 | WebResponse webResponse = ChildUpdateRequest.GetResponse(); | 204 | WebResponse webResponse = ChildUpdateRequest.GetResponse(); |
205 | if (webResponse == null) | 205 | if (webResponse == null) |
206 | { | 206 | { |
207 | m_log.Info("[REST COMMS]: Null reply on ChilAgentUpdate post"); | 207 | m_log.Info("[REST COMMS]: Null reply on ChilAgentUpdate post"); |
208 | } | 208 | } |
209 | 209 | ||
210 | StreamReader sr = new StreamReader(webResponse.GetResponseStream()); | 210 | StreamReader sr = new StreamReader(webResponse.GetResponseStream()); |
211 | reply = sr.ReadToEnd().Trim(); | 211 | reply = sr.ReadToEnd().Trim(); |
212 | sr.Close(); | 212 | sr.Close(); |
213 | //m_log.InfoFormat("[REST COMMS]: ChilAgentUpdate reply was {0} ", reply); | 213 | //m_log.InfoFormat("[REST COMMS]: ChilAgentUpdate reply was {0} ", reply); |
214 | 214 | ||
215 | } | 215 | } |
216 | catch (WebException ex) | 216 | catch (WebException ex) |
217 | { | 217 | { |
218 | m_log.InfoFormat("[REST COMMS]: exception on reply of ChilAgentUpdate {0}", ex.Message); | 218 | m_log.InfoFormat("[REST COMMS]: exception on reply of ChilAgentUpdate {0}", ex.Message); |
219 | // ignore, really | 219 | // ignore, really |
220 | } | 220 | } |
221 | 221 | ||
222 | return true; | 222 | return true; |
223 | 223 | ||
224 | } | 224 | } |
225 | 225 | ||
226 | #endregion /* IInterregionComms */ | 226 | #endregion /* IInterregionComms */ |
227 | 227 | ||
228 | #region Called from remote instances on this instance | 228 | #region Called from remote instances on this instance |
229 | 229 | ||
230 | public Hashtable ChildAgentUpdateHandler(Hashtable request) | 230 | public Hashtable ChildAgentUpdateHandler(Hashtable request) |
231 | { | 231 | { |
232 | //m_log.Debug("[CONNECTION DEBUGGING]: ChildDataUpdateHandler Called"); | 232 | //m_log.Debug("[CONNECTION DEBUGGING]: ChildDataUpdateHandler Called"); |
233 | 233 | ||
234 | Hashtable responsedata = new Hashtable(); | 234 | Hashtable responsedata = new Hashtable(); |
235 | responsedata["content_type"] = "text/html"; | 235 | responsedata["content_type"] = "text/html"; |
236 | 236 | ||
237 | OSDMap args = null; | 237 | OSDMap args = null; |
238 | try | 238 | try |
239 | { | 239 | { |
240 | OSD buffer; | 240 | OSD buffer; |
241 | // We should pay attention to the content-type, but let's assume we know it's Json | 241 | // We should pay attention to the content-type, but let's assume we know it's Json |
242 | buffer = OSDParser.DeserializeJson((string)request["body"]); | 242 | buffer = OSDParser.DeserializeJson((string)request["body"]); |
243 | if (buffer.Type == OSDType.Map) | 243 | if (buffer.Type == OSDType.Map) |
244 | args = (OSDMap)buffer; | 244 | args = (OSDMap)buffer; |
245 | else | 245 | else |
246 | { | 246 | { |
247 | // uh? | 247 | // uh? |
248 | m_log.Debug("[REST COMMS]: Got OSD of type " + buffer.Type.ToString()); | 248 | m_log.Debug("[REST COMMS]: Got OSD of type " + buffer.Type.ToString()); |
249 | } | 249 | } |
250 | } | 250 | } |
251 | catch (Exception ex) | 251 | catch (Exception ex) |
252 | { | 252 | { |
253 | m_log.InfoFormat("[REST COMMS]: exception on parse of ChildAgentUpdate message {0}", ex.Message); | 253 | m_log.InfoFormat("[REST COMMS]: exception on parse of ChildAgentUpdate message {0}", ex.Message); |
254 | responsedata["int_response_code"] = 400; | 254 | responsedata["int_response_code"] = 400; |
255 | responsedata["str_response_string"] = "false"; | 255 | responsedata["str_response_string"] = "false"; |
256 | 256 | ||
257 | return responsedata; | 257 | return responsedata; |
258 | } | 258 | } |
259 | 259 | ||
260 | // retrieve the regionhandle | 260 | // retrieve the regionhandle |
261 | ulong regionhandle = 0; | 261 | ulong regionhandle = 0; |
262 | if (args["destination_handle"] != null) | 262 | if (args["destination_handle"] != null) |
263 | UInt64.TryParse(args["destination_handle"].AsString(), out regionhandle); | 263 | UInt64.TryParse(args["destination_handle"].AsString(), out regionhandle); |
264 | 264 | ||
265 | AgentData agent = new AgentData(); | 265 | AgentData agent = new AgentData(); |
266 | try | 266 | try |
267 | { | 267 | { |
268 | agent.UnpackUpdateMessage(args); | 268 | agent.UnpackUpdateMessage(args); |
269 | } | 269 | } |
270 | catch (Exception ex) | 270 | catch (Exception ex) |
271 | { | 271 | { |
272 | m_log.InfoFormat("[REST COMMS]: exception on unpacking ChildAgentUpdate message {0}", ex.Message); | 272 | m_log.InfoFormat("[REST COMMS]: exception on unpacking ChildAgentUpdate message {0}", ex.Message); |
273 | } | 273 | } |
274 | //agent.Dump(); | 274 | //agent.Dump(); |
275 | 275 | ||
276 | bool result = m_localBackend.SendChildAgentUpdate(regionhandle, agent); | 276 | bool result = m_localBackend.SendChildAgentUpdate(regionhandle, agent); |
277 | 277 | ||
278 | 278 | ||
279 | responsedata["int_response_code"] = 200; | 279 | responsedata["int_response_code"] = 200; |
280 | responsedata["str_response_string"] = result.ToString(); | 280 | responsedata["str_response_string"] = result.ToString(); |
281 | return responsedata; | 281 | return responsedata; |
282 | } | 282 | } |
283 | 283 | ||
284 | #endregion | 284 | #endregion |
285 | 285 | ||
286 | #region Misc | 286 | #region Misc |
287 | 287 | ||
288 | protected virtual ulong GetRegionHandle(RegionInfo region) | 288 | protected virtual ulong GetRegionHandle(RegionInfo region) |
289 | { | 289 | { |
290 | return region.RegionHandle; | 290 | return region.RegionHandle; |
291 | } | 291 | } |
292 | 292 | ||
293 | #endregion /* Misc */ | 293 | #endregion /* Misc */ |
294 | 294 | ||
295 | } | 295 | } |
296 | } | 296 | } |
diff --git a/OpenSim/Region/Environment/Modules/Scripting/VectorRender/VectorRenderModule.cs b/OpenSim/Region/Environment/Modules/Scripting/VectorRender/VectorRenderModule.cs index 6b9fde4..f8a9879 100644 --- a/OpenSim/Region/Environment/Modules/Scripting/VectorRender/VectorRenderModule.cs +++ b/OpenSim/Region/Environment/Modules/Scripting/VectorRender/VectorRenderModule.cs | |||
@@ -325,7 +325,7 @@ namespace OpenSim.Region.Environment.Modules.Scripting.VectorRender | |||
325 | int hex = 0; | 325 | int hex = 0; |
326 | 326 | ||
327 | Color newColour; | 327 | Color newColour; |
328 | if(Int32.TryParse(nextLine, NumberStyles.HexNumber, CultureInfo.InvariantCulture, out hex)) | 328 | if (Int32.TryParse(nextLine, NumberStyles.HexNumber, CultureInfo.InvariantCulture, out hex)) |
329 | { | 329 | { |
330 | newColour = Color.FromArgb(hex); | 330 | newColour = Color.FromArgb(hex); |
331 | } | 331 | } |
diff --git a/OpenSim/Region/Environment/Modules/World/Permissions/PermissionsModule.cs b/OpenSim/Region/Environment/Modules/World/Permissions/PermissionsModule.cs index 1117c7b..96e7919 100644 --- a/OpenSim/Region/Environment/Modules/World/Permissions/PermissionsModule.cs +++ b/OpenSim/Region/Environment/Modules/World/Permissions/PermissionsModule.cs | |||
@@ -533,7 +533,7 @@ namespace OpenSim.Region.Environment.Modules.World.Permissions | |||
533 | { | 533 | { |
534 | permission = true; | 534 | permission = true; |
535 | } | 535 | } |
536 | else if(group.IsAttachment) | 536 | else if (group.IsAttachment) |
537 | { | 537 | { |
538 | permission = false; | 538 | permission = false; |
539 | } | 539 | } |
diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs index 6aa34e4..56b5df6 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.cs | |||
@@ -4456,14 +4456,14 @@ namespace OpenSim.Region.Environment.Scenes | |||
4456 | // update non-physical objects like the joint proxy objects that represent the position | 4456 | // update non-physical objects like the joint proxy objects that represent the position |
4457 | // of the joints in the scene. | 4457 | // of the joints in the scene. |
4458 | 4458 | ||
4459 | // This routine is normally called from within a lock(OdeLock) from within the OdePhysicsScene | 4459 | // This routine is normally called from within a lock (OdeLock) from within the OdePhysicsScene |
4460 | // WARNING: be careful of deadlocks here if you manipulate the scene. Remember you are being called | 4460 | // WARNING: be careful of deadlocks here if you manipulate the scene. Remember you are being called |
4461 | // from within the OdePhysicsScene. | 4461 | // from within the OdePhysicsScene. |
4462 | 4462 | ||
4463 | protected internal void jointMoved(PhysicsJoint joint) | 4463 | protected internal void jointMoved(PhysicsJoint joint) |
4464 | { | 4464 | { |
4465 | 4465 | ||
4466 | // m_parentScene.PhysicsScene.DumpJointInfo(); // non-thread-locked version; we should already be in a lock(OdeLock) when this callback is invoked | 4466 | // m_parentScene.PhysicsScene.DumpJointInfo(); // non-thread-locked version; we should already be in a lock (OdeLock) when this callback is invoked |
4467 | // FIXME: this causes a sequential lookup of all objects in the scene; use a dictionary | 4467 | // FIXME: this causes a sequential lookup of all objects in the scene; use a dictionary |
4468 | SceneObjectPart jointProxyObject = GetSceneObjectPart(joint.ObjectNameInScene); | 4468 | SceneObjectPart jointProxyObject = GetSceneObjectPart(joint.ObjectNameInScene); |
4469 | if (jointProxyObject == null) | 4469 | if (jointProxyObject == null) |
@@ -4521,7 +4521,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
4521 | // update non-physical objects like the joint proxy objects that represent the position | 4521 | // update non-physical objects like the joint proxy objects that represent the position |
4522 | // of the joints in the scene. | 4522 | // of the joints in the scene. |
4523 | 4523 | ||
4524 | // This routine is normally called from within a lock(OdeLock) from within the OdePhysicsScene | 4524 | // This routine is normally called from within a lock (OdeLock) from within the OdePhysicsScene |
4525 | // WARNING: be careful of deadlocks here if you manipulate the scene. Remember you are being called | 4525 | // WARNING: be careful of deadlocks here if you manipulate the scene. Remember you are being called |
4526 | // from within the OdePhysicsScene. | 4526 | // from within the OdePhysicsScene. |
4527 | protected internal void jointDeactivated(PhysicsJoint joint) | 4527 | protected internal void jointDeactivated(PhysicsJoint joint) |
@@ -4547,7 +4547,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
4547 | // alert the user of errors by using the debug channel in the same way that scripts alert | 4547 | // alert the user of errors by using the debug channel in the same way that scripts alert |
4548 | // the user of compile errors. | 4548 | // the user of compile errors. |
4549 | 4549 | ||
4550 | // This routine is normally called from within a lock(OdeLock) from within the OdePhysicsScene | 4550 | // This routine is normally called from within a lock (OdeLock) from within the OdePhysicsScene |
4551 | // WARNING: be careful of deadlocks here if you manipulate the scene. Remember you are being called | 4551 | // WARNING: be careful of deadlocks here if you manipulate the scene. Remember you are being called |
4552 | // from within the OdePhysicsScene. | 4552 | // from within the OdePhysicsScene. |
4553 | public void jointErrorMessage(PhysicsJoint joint, string message) | 4553 | public void jointErrorMessage(PhysicsJoint joint, string message) |
diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs b/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs index 0f3e065..8b45484 100644 --- a/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs +++ b/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs | |||
@@ -1624,7 +1624,7 @@ if (m_shape != null) { | |||
1624 | part.m_fromUserInventoryItemID = fromUserInventoryItemId; | 1624 | part.m_fromUserInventoryItemID = fromUserInventoryItemId; |
1625 | 1625 | ||
1626 | // for tempOnRez objects, we have to fix the Expire date. | 1626 | // for tempOnRez objects, we have to fix the Expire date. |
1627 | if((part.Flags & PrimFlags.TemporaryOnRez) != 0) part.ResetExpire(); | 1627 | if ((part.Flags & PrimFlags.TemporaryOnRez) != 0) part.ResetExpire(); |
1628 | 1628 | ||
1629 | return part; | 1629 | return part; |
1630 | } | 1630 | } |
diff --git a/OpenSim/Region/Physics/Manager/PhysicsJoint.cs b/OpenSim/Region/Physics/Manager/PhysicsJoint.cs index 9ef1c84..9474ee4 100644 --- a/OpenSim/Region/Physics/Manager/PhysicsJoint.cs +++ b/OpenSim/Region/Physics/Manager/PhysicsJoint.cs | |||
@@ -1,55 +1,55 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (c) Contributors, http://opensimulator.org/ | 2 | * Copyright (c) Contributors, http://opensimulator.org/ |
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | 3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. |
4 | * | 4 | * |
5 | * Redistribution and use in source and binary forms, with or without | 5 | * Redistribution and use in source and binary forms, with or without |
6 | * modification, are permitted provided that the following conditions are met: | 6 | * modification, are permitted provided that the following conditions are met: |
7 | * * Redistributions of source code must retain the above copyright | 7 | * * Redistributions of source code must retain the above copyright |
8 | * notice, this list of conditions and the following disclaimer. | 8 | * notice, this list of conditions and the following disclaimer. |
9 | * * Redistributions in binary form must reproduce the above copyright | 9 | * * Redistributions in binary form must reproduce the above copyright |
10 | * notice, this list of conditions and the following disclaimer in the | 10 | * notice, this list of conditions and the following disclaimer in the |
11 | * documentation and/or other materials provided with the distribution. | 11 | * documentation and/or other materials provided with the distribution. |
12 | * * Neither the name of the OpenSim Project nor the | 12 | * * Neither the name of the OpenSim Project nor the |
13 | * names of its contributors may be used to endorse or promote products | 13 | * names of its contributors may be used to endorse or promote products |
14 | * derived from this software without specific prior written permission. | 14 | * derived from this software without specific prior written permission. |
15 | * | 15 | * |
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY | 16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY |
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | 17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | 18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | 19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY |
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | 20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES |
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | 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 | 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 | 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 | 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. | 25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
26 | */ | 26 | */ |
27 | 27 | ||
28 | using System; | 28 | using System; |
29 | using System.Collections.Generic; | 29 | using System.Collections.Generic; |
30 | using OpenSim.Framework; | 30 | using OpenSim.Framework; |
31 | using OpenMetaverse; | 31 | using OpenMetaverse; |
32 | 32 | ||
33 | namespace OpenSim.Region.Physics.Manager | 33 | namespace OpenSim.Region.Physics.Manager |
34 | { | 34 | { |
35 | public enum PhysicsJointType : int | 35 | public enum PhysicsJointType : int |
36 | { | 36 | { |
37 | Ball = 0, | 37 | Ball = 0, |
38 | Hinge = 1 | 38 | Hinge = 1 |
39 | } | 39 | } |
40 | 40 | ||
41 | public class PhysicsJoint | 41 | public class PhysicsJoint |
42 | { | 42 | { |
43 | public virtual bool IsInPhysicsEngine { get { return false; } } // set internally to indicate if this joint has already been passed to the physics engine or is still pending | 43 | public virtual bool IsInPhysicsEngine { get { return false; } } // set internally to indicate if this joint has already been passed to the physics engine or is still pending |
44 | public PhysicsJointType Type; | 44 | public PhysicsJointType Type; |
45 | public string RawParams; | 45 | public string RawParams; |
46 | public List<string> BodyNames = new List<string>(); | 46 | public List<string> BodyNames = new List<string>(); |
47 | public PhysicsVector Position; // global coords | 47 | public PhysicsVector Position; // global coords |
48 | public Quaternion Rotation; // global coords | 48 | public Quaternion Rotation; // global coords |
49 | public string ObjectNameInScene; // proxy object in scene that represents the joint position/orientation | 49 | public string ObjectNameInScene; // proxy object in scene that represents the joint position/orientation |
50 | public string TrackedBodyName; // body name that this joint is attached to (ObjectNameInScene will follow TrackedBodyName) | 50 | public string TrackedBodyName; // body name that this joint is attached to (ObjectNameInScene will follow TrackedBodyName) |
51 | public Quaternion LocalRotation; // joint orientation relative to one of the involved bodies, the tracked body | 51 | public Quaternion LocalRotation; // joint orientation relative to one of the involved bodies, the tracked body |
52 | public int ErrorMessageCount; // total # of error messages printed for this joint since its creation. if too many, further error messages are suppressed to prevent flooding. | 52 | public int ErrorMessageCount; // total # of error messages printed for this joint since its creation. if too many, further error messages are suppressed to prevent flooding. |
53 | public const int maxErrorMessages = 100; // no more than this # of error messages will be printed for each joint | 53 | public const int maxErrorMessages = 100; // no more than this # of error messages will be printed for each joint |
54 | } | 54 | } |
55 | } | 55 | } |
diff --git a/OpenSim/Region/Physics/OdePlugin/OdePhysicsJoint.cs b/OpenSim/Region/Physics/OdePlugin/OdePhysicsJoint.cs index d080e9b..9858d6a 100644 --- a/OpenSim/Region/Physics/OdePlugin/OdePhysicsJoint.cs +++ b/OpenSim/Region/Physics/OdePlugin/OdePhysicsJoint.cs | |||
@@ -1,49 +1,49 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (c) Contributors, http://opensimulator.org/ | 2 | * Copyright (c) Contributors, http://opensimulator.org/ |
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | 3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. |
4 | * | 4 | * |
5 | * Redistribution and use in source and binary forms, with or without | 5 | * Redistribution and use in source and binary forms, with or without |
6 | * modification, are permitted provided that the following conditions are met: | 6 | * modification, are permitted provided that the following conditions are met: |
7 | * * Redistributions of source code must retain the above copyright | 7 | * * Redistributions of source code must retain the above copyright |
8 | * notice, this list of conditions and the following disclaimer. | 8 | * notice, this list of conditions and the following disclaimer. |
9 | * * Redistributions in binary form must reproduce the above copyright | 9 | * * Redistributions in binary form must reproduce the above copyright |
10 | * notice, this list of conditions and the following disclaimer in the | 10 | * notice, this list of conditions and the following disclaimer in the |
11 | * documentation and/or other materials provided with the distribution. | 11 | * documentation and/or other materials provided with the distribution. |
12 | * * Neither the name of the OpenSim Project nor the | 12 | * * Neither the name of the OpenSim Project nor the |
13 | * names of its contributors may be used to endorse or promote products | 13 | * names of its contributors may be used to endorse or promote products |
14 | * derived from this software without specific prior written permission. | 14 | * derived from this software without specific prior written permission. |
15 | * | 15 | * |
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY | 16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY |
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | 17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | 18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | 19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY |
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | 20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES |
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | 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 | 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 | 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 | 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. | 25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
26 | */ | 26 | */ |
27 | 27 | ||
28 | using System; | 28 | using System; |
29 | using OpenMetaverse; | 29 | using OpenMetaverse; |
30 | using Ode.NET; | 30 | using Ode.NET; |
31 | using OpenSim.Framework; | 31 | using OpenSim.Framework; |
32 | using OpenSim.Region.Physics.Manager; | 32 | using OpenSim.Region.Physics.Manager; |
33 | using OpenSim.Region.Physics.Manager; | 33 | using OpenSim.Region.Physics.Manager; |
34 | using OpenSim.Region.Physics.OdePlugin; | 34 | using OpenSim.Region.Physics.OdePlugin; |
35 | 35 | ||
36 | namespace OpenSim.Region.Physics.OdePlugin | 36 | namespace OpenSim.Region.Physics.OdePlugin |
37 | { | 37 | { |
38 | class OdePhysicsJoint : PhysicsJoint | 38 | class OdePhysicsJoint : PhysicsJoint |
39 | { | 39 | { |
40 | public override bool IsInPhysicsEngine | 40 | public override bool IsInPhysicsEngine |
41 | { | 41 | { |
42 | get | 42 | get |
43 | { | 43 | { |
44 | return (jointID != IntPtr.Zero); | 44 | return (jointID != IntPtr.Zero); |
45 | } | 45 | } |
46 | } | 46 | } |
47 | public IntPtr jointID; | 47 | public IntPtr jointID; |
48 | } | 48 | } |
49 | } | 49 | } |
diff --git a/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs b/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs index acd2569..a250a6a 100644 --- a/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs +++ b/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs | |||
@@ -1366,28 +1366,28 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
1366 | get { return m_NINJA_physics_joints_enabled; } | 1366 | get { return m_NINJA_physics_joints_enabled; } |
1367 | } | 1367 | } |
1368 | 1368 | ||
1369 | // internal utility function: must be called within a lock(OdeLock) | 1369 | // internal utility function: must be called within a lock (OdeLock) |
1370 | private void InternalAddActiveJoint(PhysicsJoint joint) | 1370 | private void InternalAddActiveJoint(PhysicsJoint joint) |
1371 | { | 1371 | { |
1372 | activeJoints.Add(joint); | 1372 | activeJoints.Add(joint); |
1373 | SOPName_to_activeJoint.Add(joint.ObjectNameInScene, joint); | 1373 | SOPName_to_activeJoint.Add(joint.ObjectNameInScene, joint); |
1374 | } | 1374 | } |
1375 | 1375 | ||
1376 | // internal utility function: must be called within a lock(OdeLock) | 1376 | // internal utility function: must be called within a lock (OdeLock) |
1377 | private void InternalAddPendingJoint(OdePhysicsJoint joint) | 1377 | private void InternalAddPendingJoint(OdePhysicsJoint joint) |
1378 | { | 1378 | { |
1379 | pendingJoints.Add(joint); | 1379 | pendingJoints.Add(joint); |
1380 | SOPName_to_pendingJoint.Add(joint.ObjectNameInScene, joint); | 1380 | SOPName_to_pendingJoint.Add(joint.ObjectNameInScene, joint); |
1381 | } | 1381 | } |
1382 | 1382 | ||
1383 | // internal utility function: must be called within a lock(OdeLock) | 1383 | // internal utility function: must be called within a lock (OdeLock) |
1384 | private void InternalRemovePendingJoint(PhysicsJoint joint) | 1384 | private void InternalRemovePendingJoint(PhysicsJoint joint) |
1385 | { | 1385 | { |
1386 | pendingJoints.Remove(joint); | 1386 | pendingJoints.Remove(joint); |
1387 | SOPName_to_pendingJoint.Remove(joint.ObjectNameInScene); | 1387 | SOPName_to_pendingJoint.Remove(joint.ObjectNameInScene); |
1388 | } | 1388 | } |
1389 | 1389 | ||
1390 | // internal utility function: must be called within a lock(OdeLock) | 1390 | // internal utility function: must be called within a lock (OdeLock) |
1391 | private void InternalRemoveActiveJoint(PhysicsJoint joint) | 1391 | private void InternalRemoveActiveJoint(PhysicsJoint joint) |
1392 | { | 1392 | { |
1393 | activeJoints.Remove(joint); | 1393 | activeJoints.Remove(joint); |
@@ -1640,7 +1640,7 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
1640 | } | 1640 | } |
1641 | } | 1641 | } |
1642 | 1642 | ||
1643 | // normally called from within OnJointMoved, which is called from within a lock(OdeLock) | 1643 | // normally called from within OnJointMoved, which is called from within a lock (OdeLock) |
1644 | public override PhysicsVector GetJointAnchor(PhysicsJoint joint) | 1644 | public override PhysicsVector GetJointAnchor(PhysicsJoint joint) |
1645 | { | 1645 | { |
1646 | Debug.Assert(joint.IsInPhysicsEngine); | 1646 | Debug.Assert(joint.IsInPhysicsEngine); |
@@ -1666,7 +1666,7 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
1666 | return new PhysicsVector(pos.X, pos.Y, pos.Z); | 1666 | return new PhysicsVector(pos.X, pos.Y, pos.Z); |
1667 | } | 1667 | } |
1668 | 1668 | ||
1669 | // normally called from within OnJointMoved, which is called from within a lock(OdeLock) | 1669 | // normally called from within OnJointMoved, which is called from within a lock (OdeLock) |
1670 | // WARNING: ODE sometimes returns <0,0,0> as the joint axis! Therefore this function | 1670 | // WARNING: ODE sometimes returns <0,0,0> as the joint axis! Therefore this function |
1671 | // appears to be unreliable. Fortunately we can compute the joint axis ourselves by | 1671 | // appears to be unreliable. Fortunately we can compute the joint axis ourselves by |
1672 | // keeping track of the joint's original orientation relative to one of the involved bodies. | 1672 | // keeping track of the joint's original orientation relative to one of the involved bodies. |
@@ -2230,8 +2230,8 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
2230 | 2230 | ||
2231 | if (SupportsNINJAJoints) | 2231 | if (SupportsNINJAJoints) |
2232 | { | 2232 | { |
2233 | DeleteRequestedJoints(); // this must be outside of the lock(OdeLock) to avoid deadlocks | 2233 | DeleteRequestedJoints(); // this must be outside of the lock (OdeLock) to avoid deadlocks |
2234 | CreateRequestedJoints(); // this must be outside of the lock(OdeLock) to avoid deadlocks | 2234 | CreateRequestedJoints(); // this must be outside of the lock (OdeLock) to avoid deadlocks |
2235 | } | 2235 | } |
2236 | 2236 | ||
2237 | lock (OdeLock) | 2237 | lock (OdeLock) |
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs index 89911ec..bb77c1e 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs | |||
@@ -3644,7 +3644,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
3644 | 3644 | ||
3645 | partItemID = item.ItemID; | 3645 | partItemID = item.ItemID; |
3646 | int linkNumber = m_host.LinkNum; | 3646 | int linkNumber = m_host.LinkNum; |
3647 | if(m_host.ParentGroup.Children.Count == 1) | 3647 | if (m_host.ParentGroup.Children.Count == 1) |
3648 | linkNumber = 0; | 3648 | linkNumber = 0; |
3649 | 3649 | ||
3650 | 3650 | ||