From 9005365115a0c56c4d4827bff67bf8e5e317e5d6 Mon Sep 17 00:00:00 2001
From: Diva Canto
Date: Fri, 4 Sep 2015 14:14:53 -0700
Subject: Deleted old unfinished code under Framework.Communications that
wasn't being used anywhere. Also folded GenericAsyncResult into RestClient,
since it is used only there. This is preparation to remove
Framework.Communications entirely.
---
.../Framework/Communications/GenericAsyncResult.cs | 185 ---------------------
.../Communications/Limit/IRequestLimitStrategy.cs | 66 --------
.../Communications/Limit/NullLimitStrategy.cs | 40 -----
.../Communications/Limit/RepeatLimitStrategy.cs | 109 ------------
.../Communications/Limit/TimeLimitStrategy.cs | 140 ----------------
OpenSim/Framework/Communications/RestClient.cs | 154 +++++++++++++++++
OpenSim/Framework/Communications/XMPP/XmppError.cs | 39 -----
.../Framework/Communications/XMPP/XmppIqStanza.cs | 60 -------
.../Communications/XMPP/XmppMessageStanza.cs | 93 -----------
.../Communications/XMPP/XmppPresenceStanza.cs | 69 --------
.../Communications/XMPP/XmppSerializer.cs | 79 ---------
.../Framework/Communications/XMPP/XmppStanza.cs | 70 --------
.../Framework/Communications/XMPP/XmppWriter.cs | 57 -------
13 files changed, 154 insertions(+), 1007 deletions(-)
delete mode 100644 OpenSim/Framework/Communications/GenericAsyncResult.cs
delete mode 100644 OpenSim/Framework/Communications/Limit/IRequestLimitStrategy.cs
delete mode 100644 OpenSim/Framework/Communications/Limit/NullLimitStrategy.cs
delete mode 100644 OpenSim/Framework/Communications/Limit/RepeatLimitStrategy.cs
delete mode 100644 OpenSim/Framework/Communications/Limit/TimeLimitStrategy.cs
delete mode 100644 OpenSim/Framework/Communications/XMPP/XmppError.cs
delete mode 100644 OpenSim/Framework/Communications/XMPP/XmppIqStanza.cs
delete mode 100644 OpenSim/Framework/Communications/XMPP/XmppMessageStanza.cs
delete mode 100644 OpenSim/Framework/Communications/XMPP/XmppPresenceStanza.cs
delete mode 100644 OpenSim/Framework/Communications/XMPP/XmppSerializer.cs
delete mode 100644 OpenSim/Framework/Communications/XMPP/XmppStanza.cs
delete mode 100644 OpenSim/Framework/Communications/XMPP/XmppWriter.cs
diff --git a/OpenSim/Framework/Communications/GenericAsyncResult.cs b/OpenSim/Framework/Communications/GenericAsyncResult.cs
deleted file mode 100644
index 8e3f62b..0000000
--- a/OpenSim/Framework/Communications/GenericAsyncResult.cs
+++ /dev/null
@@ -1,185 +0,0 @@
-/*
- * Copyright (c) Contributors, http://opensimulator.org/
- * See CONTRIBUTORS.TXT for a full list of copyright holders.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of the OpenSimulator Project nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-using System;
-using System.Threading;
-
-namespace OpenSim.Framework.Communications
-{
- internal class SimpleAsyncResult : IAsyncResult
- {
- private readonly AsyncCallback m_callback;
-
- ///
- /// Is process completed?
- ///
- /// Should really be boolean, but VolatileRead has no boolean method
- private byte m_completed;
-
- ///
- /// Did process complete synchronously?
- ///
- /// I have a hard time imagining a scenario where this is the case, again, same issue about
- /// booleans and VolatileRead as m_completed
- ///
- private byte m_completedSynchronously;
-
- private readonly object m_asyncState;
- private ManualResetEvent m_waitHandle;
- private Exception m_exception;
-
- internal SimpleAsyncResult(AsyncCallback cb, object state)
- {
- m_callback = cb;
- m_asyncState = state;
- m_completed = 0;
- m_completedSynchronously = 1;
- }
-
- #region IAsyncResult Members
-
- public object AsyncState
- {
- get { return m_asyncState; }
- }
-
- public WaitHandle AsyncWaitHandle
- {
- get
- {
- if (m_waitHandle == null)
- {
- bool done = IsCompleted;
- ManualResetEvent mre = new ManualResetEvent(done);
- if (Interlocked.CompareExchange(ref m_waitHandle, mre, null) != null)
- {
- mre.Close();
- }
- else
- {
- if (!done && IsCompleted)
- {
- m_waitHandle.Set();
- }
- }
- }
-
- return m_waitHandle;
- }
- }
-
-
- public bool CompletedSynchronously
- {
- get { return Thread.VolatileRead(ref m_completedSynchronously) == 1; }
- }
-
-
- public bool IsCompleted
- {
- get { return Thread.VolatileRead(ref m_completed) == 1; }
- }
-
- #endregion
-
- #region class Methods
-
- internal void SetAsCompleted(bool completedSynchronously)
- {
- m_completed = 1;
- if (completedSynchronously)
- m_completedSynchronously = 1;
- else
- m_completedSynchronously = 0;
-
- SignalCompletion();
- }
-
- internal void HandleException(Exception e, bool completedSynchronously)
- {
- m_completed = 1;
- if (completedSynchronously)
- m_completedSynchronously = 1;
- else
- m_completedSynchronously = 0;
- m_exception = e;
-
- SignalCompletion();
- }
-
- private void SignalCompletion()
- {
- if (m_waitHandle != null) m_waitHandle.Set();
-
- if (m_callback != null) m_callback(this);
- }
-
- public void EndInvoke()
- {
- // This method assumes that only 1 thread calls EndInvoke
- if (!IsCompleted)
- {
- // If the operation isn't done, wait for it
- AsyncWaitHandle.WaitOne();
- AsyncWaitHandle.Close();
- m_waitHandle.Close();
- m_waitHandle = null; // Allow early GC
- }
-
- // Operation is done: if an exception occured, throw it
- if (m_exception != null) throw m_exception;
- }
-
- #endregion
- }
-
- internal class AsyncResult : SimpleAsyncResult
- {
- private T m_result = default(T);
-
- public AsyncResult(AsyncCallback asyncCallback, Object state) :
- base(asyncCallback, state)
- {
- }
-
- public void SetAsCompleted(T result, bool completedSynchronously)
- {
- // Save the asynchronous operation's result
- m_result = result;
-
- // Tell the base class that the operation completed
- // sucessfully (no exception)
- base.SetAsCompleted(completedSynchronously);
- }
-
- public new T EndInvoke()
- {
- base.EndInvoke();
- return m_result;
- }
- }
-}
\ No newline at end of file
diff --git a/OpenSim/Framework/Communications/Limit/IRequestLimitStrategy.cs b/OpenSim/Framework/Communications/Limit/IRequestLimitStrategy.cs
deleted file mode 100644
index 070d106..0000000
--- a/OpenSim/Framework/Communications/Limit/IRequestLimitStrategy.cs
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright (c) Contributors, http://opensimulator.org/
- * See CONTRIBUTORS.TXT for a full list of copyright holders.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of the OpenSimulator Project nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-namespace OpenSim.Framework.Communications.Limit
-{
- ///
- /// Interface for strategies that can limit requests from the client. Currently only used in the
- /// texture modules to deal with repeated requests for certain textures. However, limiting strategies
- /// could be used with other requests.
- ///
- public interface IRequestLimitStrategy
- {
- ///
- /// Should the request be allowed? If the id is not monitored, then the request is always allowed.
- /// Otherwise, the strategy criteria will be applied.
- ///
- ///
- ///
- bool AllowRequest(TId id);
-
- ///
- /// Has the request been refused just once?
- ///
- /// False if the request has not yet been refused, or if the request has been refused more
- /// than once.
- bool IsFirstRefusal(TId id);
-
- ///
- /// Start monitoring for future AllowRequest calls. If the id is already monitored, then monitoring
- /// continues.
- ///
- ///
- void MonitorRequests(TId id);
-
- ///
- /// Is the id being monitored?
- ///
- ///
- ///
- bool IsMonitoringRequests(TId id);
- }
-}
diff --git a/OpenSim/Framework/Communications/Limit/NullLimitStrategy.cs b/OpenSim/Framework/Communications/Limit/NullLimitStrategy.cs
deleted file mode 100644
index 7672653..0000000
--- a/OpenSim/Framework/Communications/Limit/NullLimitStrategy.cs
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright (c) Contributors, http://opensimulator.org/
- * See CONTRIBUTORS.TXT for a full list of copyright holders.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of the OpenSimulator Project nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-namespace OpenSim.Framework.Communications.Limit
-{
- ///
- /// Strategy which polices no limits
- ///
- public class NullLimitStrategy : IRequestLimitStrategy
- {
- public bool AllowRequest(TId id) { return true; }
- public bool IsFirstRefusal(TId id) { return false; }
- public void MonitorRequests(TId id) { /* intentionally blank */ }
- public bool IsMonitoringRequests(TId id) { return false; }
- }
-}
diff --git a/OpenSim/Framework/Communications/Limit/RepeatLimitStrategy.cs b/OpenSim/Framework/Communications/Limit/RepeatLimitStrategy.cs
deleted file mode 100644
index 44dd592..0000000
--- a/OpenSim/Framework/Communications/Limit/RepeatLimitStrategy.cs
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * Copyright (c) Contributors, http://opensimulator.org/
- * See CONTRIBUTORS.TXT for a full list of copyright holders.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of the OpenSimulator Project nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-using System.Collections.Generic;
-
-namespace OpenSim.Framework.Communications.Limit
-{
- ///
- /// Limit requests by discarding them after they've been repeated a certain number of times.
- ///
- public class RepeatLimitStrategy : IRequestLimitStrategy
- {
- ///
- /// Record each asset request that we're notified about.
- ///
- private readonly Dictionary requestCounts = new Dictionary();
-
- ///
- /// The maximum number of requests that can be made before we drop subsequent requests.
- ///
- private readonly int m_maxRequests;
- public int MaxRequests
- {
- get { return m_maxRequests; }
- }
-
- ///
- /// The maximum number of requests that may be served before all further
- /// requests are dropped.
- public RepeatLimitStrategy(int maxRequests)
- {
- m_maxRequests = maxRequests;
- }
-
- ///
- ///
- ///
- public bool AllowRequest(TId id)
- {
- if (requestCounts.ContainsKey(id))
- {
- requestCounts[id] += 1;
-
- if (requestCounts[id] > m_maxRequests)
- {
- return false;
- }
- }
-
- return true;
- }
-
- ///
- ///
- ///
- public bool IsFirstRefusal(TId id)
- {
- if (requestCounts.ContainsKey(id) && m_maxRequests + 1 == requestCounts[id])
- {
- return true;
- }
-
- return false;
- }
-
- ///
- ///
- ///
- public void MonitorRequests(TId id)
- {
- if (!IsMonitoringRequests(id))
- {
- requestCounts.Add(id, 1);
- }
- }
-
- ///
- ///
- ///
- public bool IsMonitoringRequests(TId id)
- {
- return requestCounts.ContainsKey(id);
- }
- }
-}
diff --git a/OpenSim/Framework/Communications/Limit/TimeLimitStrategy.cs b/OpenSim/Framework/Communications/Limit/TimeLimitStrategy.cs
deleted file mode 100644
index 7ac8293..0000000
--- a/OpenSim/Framework/Communications/Limit/TimeLimitStrategy.cs
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * Copyright (c) Contributors, http://opensimulator.org/
- * See CONTRIBUTORS.TXT for a full list of copyright holders.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of the OpenSimulator Project nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-using System;
-using System.Collections.Generic;
-
-namespace OpenSim.Framework.Communications.Limit
-{
- ///
- /// Limit requests by discarding repeat attempts that occur within a given time period
- ///
- /// XXX Don't use this for limiting texture downloading, at least not until we better handle multiple requests
- /// for the same texture at different resolutions.
- ///
- public class TimeLimitStrategy : IRequestLimitStrategy
- {
- ///
- /// Record the time at which an asset request occurs.
- ///
- private readonly Dictionary requests = new Dictionary();
-
- ///
- /// The minimum time period between which requests for the same data will be serviced.
- ///
- private readonly TimeSpan m_repeatPeriod;
- public TimeSpan RepeatPeriod
- {
- get { return m_repeatPeriod; }
- }
-
- ///
- ///
- public TimeLimitStrategy(TimeSpan repeatPeriod)
- {
- m_repeatPeriod = repeatPeriod;
- }
-
- ///
- ///
- ///
- public bool AllowRequest(TId id)
- {
- if (IsMonitoringRequests(id))
- {
- DateTime now = DateTime.Now;
- TimeSpan elapsed = now - requests[id].Time;
-
- if (elapsed < RepeatPeriod)
- {
- requests[id].Refusals += 1;
- return false;
- }
-
- requests[id].Time = now;
- }
-
- return true;
- }
-
- ///
- ///
- ///
- public bool IsFirstRefusal(TId id)
- {
- if (IsMonitoringRequests(id))
- {
- if (1 == requests[id].Refusals)
- {
- return true;
- }
- }
-
- return false;
- }
-
- ///
- ///
- ///
- public void MonitorRequests(TId id)
- {
- if (!IsMonitoringRequests(id))
- {
- requests.Add(id, new Request(DateTime.Now));
- }
- }
-
- ///
- ///
- ///
- public bool IsMonitoringRequests(TId id)
- {
- return requests.ContainsKey(id);
- }
- }
-
- ///
- /// Private request details.
- ///
- class Request
- {
- ///
- /// Time of last request
- ///
- public DateTime Time;
-
- ///
- /// Number of refusals associated with this request
- ///
- public int Refusals;
-
- public Request(DateTime time)
- {
- Time = time;
- }
- }
-}
diff --git a/OpenSim/Framework/Communications/RestClient.cs b/OpenSim/Framework/Communications/RestClient.cs
index 6f517b6..ff7cb4d 100644
--- a/OpenSim/Framework/Communications/RestClient.cs
+++ b/OpenSim/Framework/Communications/RestClient.cs
@@ -519,4 +519,158 @@ namespace OpenSim.Framework.Communications
#endregion Async Invocation
}
+
+ internal class SimpleAsyncResult : IAsyncResult
+ {
+ private readonly AsyncCallback m_callback;
+
+ ///
+ /// Is process completed?
+ ///
+ /// Should really be boolean, but VolatileRead has no boolean method
+ private byte m_completed;
+
+ ///
+ /// Did process complete synchronously?
+ ///
+ /// I have a hard time imagining a scenario where this is the case, again, same issue about
+ /// booleans and VolatileRead as m_completed
+ ///
+ private byte m_completedSynchronously;
+
+ private readonly object m_asyncState;
+ private ManualResetEvent m_waitHandle;
+ private Exception m_exception;
+
+ internal SimpleAsyncResult(AsyncCallback cb, object state)
+ {
+ m_callback = cb;
+ m_asyncState = state;
+ m_completed = 0;
+ m_completedSynchronously = 1;
+ }
+
+ #region IAsyncResult Members
+
+ public object AsyncState
+ {
+ get { return m_asyncState; }
+ }
+
+ public WaitHandle AsyncWaitHandle
+ {
+ get
+ {
+ if (m_waitHandle == null)
+ {
+ bool done = IsCompleted;
+ ManualResetEvent mre = new ManualResetEvent(done);
+ if (Interlocked.CompareExchange(ref m_waitHandle, mre, null) != null)
+ {
+ mre.Close();
+ }
+ else
+ {
+ if (!done && IsCompleted)
+ {
+ m_waitHandle.Set();
+ }
+ }
+ }
+
+ return m_waitHandle;
+ }
+ }
+
+
+ public bool CompletedSynchronously
+ {
+ get { return Thread.VolatileRead(ref m_completedSynchronously) == 1; }
+ }
+
+
+ public bool IsCompleted
+ {
+ get { return Thread.VolatileRead(ref m_completed) == 1; }
+ }
+
+ #endregion
+
+ #region class Methods
+
+ internal void SetAsCompleted(bool completedSynchronously)
+ {
+ m_completed = 1;
+ if (completedSynchronously)
+ m_completedSynchronously = 1;
+ else
+ m_completedSynchronously = 0;
+
+ SignalCompletion();
+ }
+
+ internal void HandleException(Exception e, bool completedSynchronously)
+ {
+ m_completed = 1;
+ if (completedSynchronously)
+ m_completedSynchronously = 1;
+ else
+ m_completedSynchronously = 0;
+ m_exception = e;
+
+ SignalCompletion();
+ }
+
+ private void SignalCompletion()
+ {
+ if (m_waitHandle != null) m_waitHandle.Set();
+
+ if (m_callback != null) m_callback(this);
+ }
+
+ public void EndInvoke()
+ {
+ // This method assumes that only 1 thread calls EndInvoke
+ if (!IsCompleted)
+ {
+ // If the operation isn't done, wait for it
+ AsyncWaitHandle.WaitOne();
+ AsyncWaitHandle.Close();
+ m_waitHandle.Close();
+ m_waitHandle = null; // Allow early GC
+ }
+
+ // Operation is done: if an exception occured, throw it
+ if (m_exception != null) throw m_exception;
+ }
+
+ #endregion
+ }
+
+ internal class AsyncResult : SimpleAsyncResult
+ {
+ private T m_result = default(T);
+
+ public AsyncResult(AsyncCallback asyncCallback, Object state) :
+ base(asyncCallback, state)
+ {
+ }
+
+ public void SetAsCompleted(T result, bool completedSynchronously)
+ {
+ // Save the asynchronous operation's result
+ m_result = result;
+
+ // Tell the base class that the operation completed
+ // sucessfully (no exception)
+ base.SetAsCompleted(completedSynchronously);
+ }
+
+ public new T EndInvoke()
+ {
+ base.EndInvoke();
+ return m_result;
+ }
+ }
+
}
\ No newline at end of file
diff --git a/OpenSim/Framework/Communications/XMPP/XmppError.cs b/OpenSim/Framework/Communications/XMPP/XmppError.cs
deleted file mode 100644
index 3d36e9c..0000000
--- a/OpenSim/Framework/Communications/XMPP/XmppError.cs
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (c) Contributors, http://opensimulator.org/
- * See CONTRIBUTORS.TXT for a full list of copyright holders.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of the OpenSimulator Project nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-using System.Xml.Serialization;
-
-namespace OpenSim.Framework.Communications.XMPP
-{
- [XmlRoot("error")]
- public class XmppErrorStanza
- {
- public XmppErrorStanza()
- {
- }
- }
-}
diff --git a/OpenSim/Framework/Communications/XMPP/XmppIqStanza.cs b/OpenSim/Framework/Communications/XMPP/XmppIqStanza.cs
deleted file mode 100644
index 12263f4..0000000
--- a/OpenSim/Framework/Communications/XMPP/XmppIqStanza.cs
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright (c) Contributors, http://opensimulator.org/
- * See CONTRIBUTORS.TXT for a full list of copyright holders.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of the OpenSimulator Project nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-using System.Xml.Serialization;
-
-namespace OpenSim.Framework.Communications.XMPP
-{
- ///
- /// An IQ needs to have one of the follow types set.
- ///
- public enum XmppIqType
- {
- [XmlEnum("set")] set,
- [XmlEnum("get")] get,
- [XmlEnum("result")] result,
- [XmlEnum("error")] error,
- }
-
- ///
- /// XmppIqStanza needs to be subclassed as the query content is
- /// specific to the query type.
- ///
- [XmlRoot("iq")]
- public abstract class XmppIqStanza: XmppStanza
- {
- ///
- /// IQ type: one of set, get, result, error
- ///
- [XmlAttribute("type")]
- public XmppIqType Type;
-
- public XmppIqStanza(): base()
- {
- }
- }
-}
diff --git a/OpenSim/Framework/Communications/XMPP/XmppMessageStanza.cs b/OpenSim/Framework/Communications/XMPP/XmppMessageStanza.cs
deleted file mode 100644
index 1e8c33e..0000000
--- a/OpenSim/Framework/Communications/XMPP/XmppMessageStanza.cs
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * Copyright (c) Contributors, http://opensimulator.org/
- * See CONTRIBUTORS.TXT for a full list of copyright holders.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of the OpenSimulator Project nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-using System.Xml.Serialization;
-
-namespace OpenSim.Framework.Communications.XMPP
-{
- ///
- /// Message types.
- ///
- public enum XmppMessageType
- {
- [XmlEnum("chat")] chat,
- [XmlEnum("error")] error,
- [XmlEnum("groupchat")] groupchat,
- [XmlEnum("headline")] headline,
- [XmlEnum("normal")] normal,
- }
-
- ///
- /// Message body.
- ///
- public class XmppMessageBody
- {
- [XmlText]
- public string Text;
-
- public XmppMessageBody()
- {
- }
-
- public XmppMessageBody(string message)
- {
- Text = message;
- }
-
- new public string ToString()
- {
- return Text;
- }
- }
-
- [XmlRoot("message")]
- public class XmppMessageStanza: XmppStanza
- {
- ///
- /// IQ type: one of set, get, result, error
- ///
- [XmlAttribute("type")]
- public XmppMessageType MessageType;
-
- // [XmlAttribute("error")]
- // public XmppError Error;
-
- [XmlElement("body")]
- public XmppMessageBody Body;
-
- public XmppMessageStanza() : base()
- {
- }
-
- public XmppMessageStanza(string fromJid, string toJid, XmppMessageType mType, string message) :
- base(fromJid, toJid)
- {
- MessageType = mType;
- Body = new XmppMessageBody(message);
- }
- }
-}
diff --git a/OpenSim/Framework/Communications/XMPP/XmppPresenceStanza.cs b/OpenSim/Framework/Communications/XMPP/XmppPresenceStanza.cs
deleted file mode 100644
index 4d45ac0..0000000
--- a/OpenSim/Framework/Communications/XMPP/XmppPresenceStanza.cs
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Copyright (c) Contributors, http://opensimulator.org/
- * See CONTRIBUTORS.TXT for a full list of copyright holders.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of the OpenSimulator Project nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-using System.Xml.Serialization;
-
-namespace OpenSim.Framework.Communications.XMPP
-{
- ///
- /// Message types.
- ///
- public enum XmppPresenceType
- {
- [XmlEnum("unavailable")] unavailable,
- [XmlEnum("subscribe")] subscribe,
- [XmlEnum("subscribed")] subscribed,
- [XmlEnum("unsubscribe")] unsubscribe,
- [XmlEnum("unsubscribed")] unsubscribed,
- [XmlEnum("probe")] probe,
- [XmlEnum("error")] error,
- }
-
-
- [XmlRoot("message")]
- public class XmppPresenceStanza: XmppStanza
- {
- ///
- /// IQ type: one of set, get, result, error
- ///
- [XmlAttribute("type")]
- public XmppPresenceType PresenceType;
-
- // [XmlAttribute("error")]
- // public XmppError Error;
-
- public XmppPresenceStanza() : base()
- {
- }
-
- public XmppPresenceStanza(string fromJid, string toJid, XmppPresenceType pType) :
- base(fromJid, toJid)
- {
- PresenceType = pType;
- }
- }
-}
diff --git a/OpenSim/Framework/Communications/XMPP/XmppSerializer.cs b/OpenSim/Framework/Communications/XMPP/XmppSerializer.cs
deleted file mode 100644
index e37ef28..0000000
--- a/OpenSim/Framework/Communications/XMPP/XmppSerializer.cs
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Copyright (c) Contributors, http://opensimulator.org/
- * See CONTRIBUTORS.TXT for a full list of copyright holders.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of the OpenSimulator Project nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-using System;
-using System.Collections.Generic;
-using System.Xml;
-using System.Xml.Serialization;
-
-namespace OpenSim.Framework.Communications.XMPP
-{
- public class XmppSerializer
- {
- // private static readonly ILog _log =
- // LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
-
- // need to do it this way, as XmlSerializer(type, extratypes)
- // does not work on mono (at least).
- private Dictionary _serializerForType = new Dictionary();
- private Dictionary _serializerForName = new Dictionary();
- private XmlSerializerNamespaces _xmlNs;
- private string _defaultNS;
-
- public XmppSerializer(bool server)
- {
- _xmlNs = new XmlSerializerNamespaces();
- _xmlNs.Add(String.Empty, String.Empty);
- if (server)
- _defaultNS = "jabber:server";
- else
- _defaultNS = "jabber:client";
-
- // TODO: do this via reflection
- _serializerForType[typeof(XmppMessageStanza)] = _serializerForName["message"] =
- new XmlSerializer(typeof(XmppMessageStanza), _defaultNS);
- }
-
- public void Serialize(XmlWriter xw, object o)
- {
- if (!_serializerForType.ContainsKey(o.GetType()))
- throw new ArgumentException(String.Format("no serializer available for type {0}", o.GetType()));
-
- _serializerForType[o.GetType()].Serialize(xw, o, _xmlNs);
- }
-
- public object Deserialize(XmlReader xr)
- {
- // position on next element
- xr.Read();
- if (!_serializerForName.ContainsKey(xr.LocalName))
- throw new ArgumentException(String.Format("no serializer available for name {0}", xr.LocalName));
-
- return _serializerForName[xr.LocalName].Deserialize(xr);
- }
- }
-}
diff --git a/OpenSim/Framework/Communications/XMPP/XmppStanza.cs b/OpenSim/Framework/Communications/XMPP/XmppStanza.cs
deleted file mode 100644
index 5312a31..0000000
--- a/OpenSim/Framework/Communications/XMPP/XmppStanza.cs
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Copyright (c) Contributors, http://opensimulator.org/
- * See CONTRIBUTORS.TXT for a full list of copyright holders.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of the OpenSimulator Project nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-using System;
-using System.Xml.Serialization;
-
-namespace OpenSim.Framework.Communications.XMPP
-{
- public abstract class XmppStanza
- {
- ///
- /// counter used for generating ID
- ///
- [XmlIgnore]
- private static ulong _ctr = 0;
-
- ///
- /// recipient JID
- ///
- [XmlAttribute("to")]
- public string ToJid;
-
- ///
- /// sender JID
- ///
- [XmlAttribute("from")]
- public string FromJid;
-
- ///
- /// unique ID.
- ///
- [XmlAttribute("id")]
- public string MessageId;
-
- public XmppStanza()
- {
- }
-
- public XmppStanza(string fromJid, string toJid)
- {
- ToJid = toJid;
- FromJid = fromJid;
- MessageId = String.Format("OpenSim_{0}{1}", DateTime.UtcNow.Ticks, _ctr++);
- }
- }
-}
diff --git a/OpenSim/Framework/Communications/XMPP/XmppWriter.cs b/OpenSim/Framework/Communications/XMPP/XmppWriter.cs
deleted file mode 100644
index 415d808..0000000
--- a/OpenSim/Framework/Communications/XMPP/XmppWriter.cs
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Copyright (c) Contributors, http://opensimulator.org/
- * See CONTRIBUTORS.TXT for a full list of copyright holders.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of the OpenSimulator Project nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-using System.IO;
-using System.Text;
-using System.Xml;
-using IOStream = System.IO.Stream;
-
-namespace OpenSim.Framework.Communications.XMPP
-{
- public class XMPPWriter: XmlTextWriter
- {
- public XMPPWriter(TextWriter textWriter) : base(textWriter)
- {
- }
-
- public XMPPWriter(IOStream stream) : this(stream, Util.UTF8)
- {
- }
-
- public XMPPWriter(IOStream stream, Encoding enc) : base(stream, enc)
- {
- }
-
- public override void WriteStartDocument()
- {
- }
-
- public override void WriteStartDocument(bool standalone)
- {
- }
- }
-}
--
cgit v1.1