You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by ta...@apache.org on 2013/11/26 00:38:37 UTC
svn commit: r1545459 - in
/activemq/activemq-dotnet/Apache.NMS.MQTT/trunk/src/main/csharp:
Commands/Header.cs Connection.cs Protocol/MQTTExceptionFactory.cs
Transport/ErrorResponse.cs Transport/Response.cs
Author: tabish
Date: Mon Nov 25 23:38:36 2013
New Revision: 1545459
URL: http://svn.apache.org/r1545459
Log:
https://issues.apache.org/jira/browse/AMQNET-458
Implementation
Added:
activemq/activemq-dotnet/Apache.NMS.MQTT/trunk/src/main/csharp/Commands/Header.cs (with props)
activemq/activemq-dotnet/Apache.NMS.MQTT/trunk/src/main/csharp/Protocol/MQTTExceptionFactory.cs (with props)
activemq/activemq-dotnet/Apache.NMS.MQTT/trunk/src/main/csharp/Transport/ErrorResponse.cs (with props)
Modified:
activemq/activemq-dotnet/Apache.NMS.MQTT/trunk/src/main/csharp/Connection.cs
activemq/activemq-dotnet/Apache.NMS.MQTT/trunk/src/main/csharp/Transport/Response.cs
Added: activemq/activemq-dotnet/Apache.NMS.MQTT/trunk/src/main/csharp/Commands/Header.cs
URL: http://svn.apache.org/viewvc/activemq/activemq-dotnet/Apache.NMS.MQTT/trunk/src/main/csharp/Commands/Header.cs?rev=1545459&view=auto
==============================================================================
--- activemq/activemq-dotnet/Apache.NMS.MQTT/trunk/src/main/csharp/Commands/Header.cs (added)
+++ activemq/activemq-dotnet/Apache.NMS.MQTT/trunk/src/main/csharp/Commands/Header.cs Mon Nov 25 23:38:36 2013
@@ -0,0 +1,82 @@
+//
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+using System;
+
+namespace vs2008mqtt
+{
+ public class Header
+ {
+ private byte value;
+
+ public Header(byte value)
+ {
+ }
+
+ public int Type
+ {
+ get { return (this.value & 0x0F) >> 4; }
+ set
+ {
+ this.value &= 0xF0;
+ this.value |= (byte)((value << 4) & 0x0F);
+ }
+ }
+
+ public int QoS
+ {
+ get { return (this.value & 0x06) >> 1; }
+ set
+ {
+ this.value &= 0x06;
+ this.value |= (byte)((value << 1) & 0x06);
+ }
+ }
+
+ public bool Dup
+ {
+ get { return (this.value & 0x80) > 0; }
+ set
+ {
+ if (value)
+ {
+ this.value |= 0x08;
+ }
+ else
+ {
+ this.value &= 0xF7;
+ }
+ }
+ }
+
+ public bool Retain
+ {
+ get { return (this.value & 0x01) > 0; }
+ set
+ {
+ if(value)
+ {
+ this.value |= 0x01;
+ }
+ else
+ {
+ this.value &= 0xFE;
+ }
+ }
+ }
+ }
+}
+
Propchange: activemq/activemq-dotnet/Apache.NMS.MQTT/trunk/src/main/csharp/Commands/Header.cs
------------------------------------------------------------------------------
svn:eol-style = native
Modified: activemq/activemq-dotnet/Apache.NMS.MQTT/trunk/src/main/csharp/Connection.cs
URL: http://svn.apache.org/viewvc/activemq/activemq-dotnet/Apache.NMS.MQTT/trunk/src/main/csharp/Connection.cs?rev=1545459&r1=1545458&r2=1545459&view=diff
==============================================================================
--- activemq/activemq-dotnet/Apache.NMS.MQTT/trunk/src/main/csharp/Connection.cs (original)
+++ activemq/activemq-dotnet/Apache.NMS.MQTT/trunk/src/main/csharp/Connection.cs Mon Nov 25 23:38:36 2013
@@ -547,18 +547,15 @@ namespace Apache.NMS.MQTT
}
else
{
- // TODO figure out correct error to throw.
-// NMSException exception = CreateExceptionFromBrokerError(error.Exception);
-// if(exception is InvalidClientIDException)
-// {
-// // This is non-recoverable.
-// // Shutdown the transport connection, and re-create it, but don't start it.
-// // It will be started if the connection is re-attempted.
-// this.transport.Stop();
-// ITransport newTransport = TransportFactory.CreateTransport(this.brokerUri);
-// SetTransport(newTransport);
-// throw exception;
-// }
+ ErrorResponse error = response as ErrorResponse;
+ NMSException exception = error.Error;
+ // This is non-recoverable.
+ // Shutdown the transport connection, and re-create it, but don't start it.
+ // It will be started if the connection is re-attempted.
+ this.transport.Stop();
+ ITransport newTransport = TransportFactory.CreateTransport(this.brokerUri);
+ SetTransport(newTransport);
+ throw exception;
}
}
}
Added: activemq/activemq-dotnet/Apache.NMS.MQTT/trunk/src/main/csharp/Protocol/MQTTExceptionFactory.cs
URL: http://svn.apache.org/viewvc/activemq/activemq-dotnet/Apache.NMS.MQTT/trunk/src/main/csharp/Protocol/MQTTExceptionFactory.cs?rev=1545459&view=auto
==============================================================================
--- activemq/activemq-dotnet/Apache.NMS.MQTT/trunk/src/main/csharp/Protocol/MQTTExceptionFactory.cs (added)
+++ activemq/activemq-dotnet/Apache.NMS.MQTT/trunk/src/main/csharp/Protocol/MQTTExceptionFactory.cs Mon Nov 25 23:38:36 2013
@@ -0,0 +1,62 @@
+//
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+using System;
+
+using Apache.NMS;
+
+namespace Apache.NMS.MQTT.Protocol
+{
+ public class MQTTExceptionFactory
+ {
+ private MQTTExceptionFactory ()
+ {
+ }
+
+ static NMSException CreateConnectionException(short errorCode)
+ {
+ NMSException result = null;
+
+ if (errorCode == 1)
+ {
+ result = new NMSException("Invalid MQTT Protocol Version specified");
+ }
+ else if(errorCode == 2)
+ {
+ result = new InvalidClientIDException("Client ID not accepted by Broker");
+ }
+ else if(errorCode == 3)
+ {
+ result = new InvalidClientIDException("Server is Unavailable");
+ }
+ else if(errorCode == 4)
+ {
+ result = new NMSSecurityException("Bad user anem or password provided.");
+ }
+ else if(errorCode == 5)
+ {
+ result = new NMSSecurityException("User is not Authorized.");
+ }
+ else
+ {
+ result = new NMSException("Received unknown error code.");
+ }
+
+ return result;
+ }
+ }
+}
+
Propchange: activemq/activemq-dotnet/Apache.NMS.MQTT/trunk/src/main/csharp/Protocol/MQTTExceptionFactory.cs
------------------------------------------------------------------------------
svn:eol-style = native
Added: activemq/activemq-dotnet/Apache.NMS.MQTT/trunk/src/main/csharp/Transport/ErrorResponse.cs
URL: http://svn.apache.org/viewvc/activemq/activemq-dotnet/Apache.NMS.MQTT/trunk/src/main/csharp/Transport/ErrorResponse.cs?rev=1545459&view=auto
==============================================================================
--- activemq/activemq-dotnet/Apache.NMS.MQTT/trunk/src/main/csharp/Transport/ErrorResponse.cs (added)
+++ activemq/activemq-dotnet/Apache.NMS.MQTT/trunk/src/main/csharp/Transport/ErrorResponse.cs Mon Nov 25 23:38:36 2013
@@ -0,0 +1,40 @@
+//
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+using System;
+using Apache.NMS;
+
+namespace Apache.NMS.MQTT.Transport
+{
+ public class ErrorResponse : Response
+ {
+ private NMSException error;
+ public NMSException Error
+ {
+ get { return error; }
+ set { this.error = value; }
+ }
+
+ public override bool IsErrorResponse
+ {
+ get
+ {
+ return true;
+ }
+ }
+ }
+}
+
Propchange: activemq/activemq-dotnet/Apache.NMS.MQTT/trunk/src/main/csharp/Transport/ErrorResponse.cs
------------------------------------------------------------------------------
svn:eol-style = native
Modified: activemq/activemq-dotnet/Apache.NMS.MQTT/trunk/src/main/csharp/Transport/Response.cs
URL: http://svn.apache.org/viewvc/activemq/activemq-dotnet/Apache.NMS.MQTT/trunk/src/main/csharp/Transport/Response.cs?rev=1545459&r1=1545458&r2=1545459&view=diff
==============================================================================
--- activemq/activemq-dotnet/Apache.NMS.MQTT/trunk/src/main/csharp/Transport/Response.cs (original)
+++ activemq/activemq-dotnet/Apache.NMS.MQTT/trunk/src/main/csharp/Transport/Response.cs Mon Nov 25 23:38:36 2013
@@ -23,7 +23,7 @@ namespace Apache.NMS.MQTT.Transport
/// </summary>
public class Response : BaseCommand
{
- int correlationId;
+ short correlationId;
///
/// <summery>
@@ -39,7 +39,7 @@ namespace Apache.NMS.MQTT.Transport
"CorrelationId = " + CorrelationId + " ]";
}
- public int CorrelationId
+ public short CorrelationId
{
get { return correlationId; }
set { this.correlationId = value; }
@@ -55,7 +55,7 @@ namespace Apache.NMS.MQTT.Transport
get { return true; }
}
- public bool IsErrorResponse
+ public virtual bool IsErrorResponse
{
get { return false; }
}