diff options
Major changes in interregion communications. This breaks compatibility with older versions, and may result is all sorts of weirdnesses when interacting with sims in older versions. Changes:
- Introducing synchronous Teleports. Now the receiving region calls back the sending region after the client has been made a root agent there, that is, after client sends CompleteMovement to the destination.
- SendCloseAgent moved from OGS1 Remoting to RESTComms.
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Region/Environment/Modules/Communications/Local/LocalInterregionComms.cs | 52 |
1 files changed, 43 insertions, 9 deletions
diff --git a/OpenSim/Region/Environment/Modules/Communications/Local/LocalInterregionComms.cs b/OpenSim/Region/Environment/Modules/Communications/Local/LocalInterregionComms.cs index 781bf1c..9f547a2 100644 --- a/OpenSim/Region/Environment/Modules/Communications/Local/LocalInterregionComms.cs +++ b/OpenSim/Region/Environment/Modules/Communications/Local/LocalInterregionComms.cs | |||
@@ -120,23 +120,57 @@ namespace OpenSim.Region.Environment.Modules.Communications.Local | |||
120 | 120 | ||
121 | public bool SendChildAgentUpdate(ulong regionHandle, AgentData cAgentData) | 121 | public bool SendChildAgentUpdate(ulong regionHandle, AgentData cAgentData) |
122 | { | 122 | { |
123 | lock (m_sceneList) | 123 | foreach (Scene s in m_sceneList) |
124 | { | 124 | { |
125 | foreach (Scene s in m_sceneList) | 125 | if (s.RegionInfo.RegionHandle == regionHandle) |
126 | { | 126 | { |
127 | if (s.RegionInfo.RegionHandle == regionHandle) | 127 | //m_log.Debug("[LOCAL COMMS]: Found region to send ChildAgentUpdate"); |
128 | { | 128 | s.IncomingChildAgentDataUpdate(cAgentData); |
129 | //m_log.Debug("[LOCAL COMMS]: Found region to send ChildAgentUpdate"); | 129 | return true; |
130 | return s.IncomingChildAgentDataUpdate(cAgentData); | ||
131 | //if (OnChildAgentUpdate != null) | ||
132 | // return OnChildAgentUpdate(cAgentData); | ||
133 | } | ||
134 | } | 130 | } |
135 | } | 131 | } |
136 | //m_log.Debug("[LOCAL COMMS]: region not found for ChildAgentUpdate"); | 132 | //m_log.Debug("[LOCAL COMMS]: region not found for ChildAgentUpdate"); |
137 | return false; | 133 | return false; |
138 | } | 134 | } |
139 | 135 | ||
136 | public bool SendReleaseAgent(ulong regionHandle, UUID id, string uri) | ||
137 | { | ||
138 | //uint x, y; | ||
139 | //Utils.LongToUInts(regionHandle, out x, out y); | ||
140 | //x = x / Constants.RegionSize; | ||
141 | //y = y / Constants.RegionSize; | ||
142 | //Console.WriteLine("\n >>> Local SendReleaseAgent " + x + "-" + y); | ||
143 | foreach (Scene s in m_sceneList) | ||
144 | { | ||
145 | if (s.RegionInfo.RegionHandle == regionHandle) | ||
146 | { | ||
147 | //m_log.Debug("[LOCAL COMMS]: Found region to SendReleaseAgent"); | ||
148 | return s.IncomingReleaseAgent(id); | ||
149 | } | ||
150 | } | ||
151 | //m_log.Debug("[LOCAL COMMS]: region not found in SendReleaseAgent"); | ||
152 | return false; | ||
153 | } | ||
154 | |||
155 | public bool SendCloseAgent(ulong regionHandle, UUID id) | ||
156 | { | ||
157 | //uint x, y; | ||
158 | //Utils.LongToUInts(regionHandle, out x, out y); | ||
159 | //x = x / Constants.RegionSize; | ||
160 | //y = y / Constants.RegionSize; | ||
161 | //Console.WriteLine("\n >>> Local SendCloseAgent " + x + "-" + y); | ||
162 | foreach (Scene s in m_sceneList) | ||
163 | { | ||
164 | if (s.RegionInfo.RegionHandle == regionHandle) | ||
165 | { | ||
166 | //m_log.Debug("[LOCAL COMMS]: Found region to SendCloseAgent"); | ||
167 | return s.IncomingCloseAgent(id); | ||
168 | } | ||
169 | } | ||
170 | //m_log.Debug("[LOCAL COMMS]: region not found in SendCloseAgent"); | ||
171 | return false; | ||
172 | } | ||
173 | |||
140 | #endregion /* IInterregionComms */ | 174 | #endregion /* IInterregionComms */ |
141 | } | 175 | } |
142 | } | 176 | } |