You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by ch...@apache.org on 2012/04/27 17:32:00 UTC
svn commit: r1331470 -
/activemq/activemq-apollo/trunk/apollo-stomp/src/main/scala/org/apache/activemq/apollo/stomp/StompCodec.scala
Author: chirino
Date: Fri Apr 27 15:32:00 2012
New Revision: 1331470
URL: http://svn.apache.org/viewvc?rev=1331470&view=rev
Log:
Use the new transport aware interface of hawtdispatch to more reliably figure out the read/write buffer sizes for the stomp codec.
Modified:
activemq/activemq-apollo/trunk/apollo-stomp/src/main/scala/org/apache/activemq/apollo/stomp/StompCodec.scala
Modified: activemq/activemq-apollo/trunk/apollo-stomp/src/main/scala/org/apache/activemq/apollo/stomp/StompCodec.scala
URL: http://svn.apache.org/viewvc/activemq/activemq-apollo/trunk/apollo-stomp/src/main/scala/org/apache/activemq/apollo/stomp/StompCodec.scala?rev=1331470&r1=1331469&r2=1331470&view=diff
==============================================================================
--- activemq/activemq-apollo/trunk/apollo-stomp/src/main/scala/org/apache/activemq/apollo/stomp/StompCodec.scala (original)
+++ activemq/activemq-apollo/trunk/apollo-stomp/src/main/scala/org/apache/activemq/apollo/stomp/StompCodec.scala Fri Apr 27 15:32:00 2012
@@ -134,7 +134,7 @@ object StompCodec extends Log {
}
-class StompCodec extends ProtocolCodec {
+class StompCodec extends ProtocolCodec with TransportAware {
import StompCodec._
var max_header_length = 1024*10
@@ -172,11 +172,33 @@ class StompCodec extends ProtocolCodec {
def full = next_write_direct!=null || next_write_buffer.size >= (write_buffer_size >> 1)
def is_empty = write_buffer.remaining == 0 && write_direct==null
+ def setTransport(transport:Transport) {
+ transport match {
+ case tcp:TcpTransport=>
+ write_buffer_size = tcp.getSendBufferSize();
+ read_buffer_size = tcp.getReceiveBufferSize();
+ case udp:UdpTransport=>
+ write_buffer_size = udp.getSendBufferSize();
+ read_buffer_size = udp.getReceiveBufferSize();
+ case _ =>
+ try {
+ write_channel match {
+ case channel:SocketChannel =>
+ write_buffer_size = channel.socket.getSendBufferSize();
+ read_buffer_size = channel.socket.getReceiveBufferSize()
+ case channel:SslTransport#SSLChannel =>
+ write_buffer_size = channel.socket.getSendBufferSize();
+ read_buffer_size = channel.socket.getReceiveBufferSize()
+ }
+ } catch {
+ case _ =>
+ }
+
+ }
+ }
+
def setWritableByteChannel(channel: WritableByteChannel) = {
this.write_channel = channel
- if( this.write_channel.isInstanceOf[SocketChannel] ) {
- write_buffer_size = this.write_channel.asInstanceOf[SocketChannel].socket().getSendBufferSize
- }
}
def getWriteCounter = write_counter
@@ -319,9 +341,6 @@ class StompCodec extends ProtocolCodec {
def setReadableByteChannel(channel: ReadableByteChannel) = {
this.read_channel = channel
- if( this.read_channel.isInstanceOf[SocketChannel] ) {
- read_buffer_size = this.read_channel.asInstanceOf[SocketChannel].socket().getReceiveBufferSize
- }
}
def unread(buffer: Array[Byte]) = {