summaryrefslogtreecommitdiff
path: root/lib/haxe/src/org/apache
diff options
context:
space:
mode:
authorJens Geyer <jensg@apache.org>2014-11-11 01:30:02 +0100
committerJens Geyer <jensg@apache.org>2014-11-11 01:35:21 +0100
commit65e9bde0ede772c9148e33ccc9be7f92eeeb9638 (patch)
treec9d527b642863e741b6a19706d6ae2c290ae38b9 /lib/haxe/src/org/apache
parent6794c624854e86fa9b73f36cac70b583a3629d02 (diff)
downloadthrift-65e9bde0ede772c9148e33ccc9be7f92eeeb9638.tar.gz
THRIFT-2813 multiple haxe library fixes/improvements
Client: Haxe Patch: Jens Geyer This closes #260
Diffstat (limited to 'lib/haxe/src/org/apache')
-rw-r--r--lib/haxe/src/org/apache/thrift/server/TServer.hx7
-rw-r--r--lib/haxe/src/org/apache/thrift/server/TSimpleServer.hx14
-rw-r--r--lib/haxe/src/org/apache/thrift/transport/TFramedTransport.hx62
-rw-r--r--lib/haxe/src/org/apache/thrift/transport/TServerSocket.hx4
-rw-r--r--lib/haxe/src/org/apache/thrift/transport/TSocket.hx17
5 files changed, 65 insertions, 39 deletions
diff --git a/lib/haxe/src/org/apache/thrift/server/TServer.hx b/lib/haxe/src/org/apache/thrift/server/TServer.hx
index e689b327b..56eee0add 100644
--- a/lib/haxe/src/org/apache/thrift/server/TServer.hx
+++ b/lib/haxe/src/org/apache/thrift/server/TServer.hx
@@ -38,7 +38,7 @@ class TServer
// Log delegation
private var _logDelegate : Dynamic->Void = null;
- public var logDelegate(default,set) : Dynamic->Void;
+ public var logDelegate(get,set) : Dynamic->Void;
public function new( processor : TProcessor,
serverTransport : TServerTransport,
@@ -87,6 +87,11 @@ class TServer
}
+ private function get_logDelegate() : Dynamic->Void {
+ return _logDelegate;
+ }
+
+
private function DefaultLogDelegate(value : Dynamic) : Void {
trace( value);
}
diff --git a/lib/haxe/src/org/apache/thrift/server/TSimpleServer.hx b/lib/haxe/src/org/apache/thrift/server/TSimpleServer.hx
index cb7cbd643..f3408e272 100644
--- a/lib/haxe/src/org/apache/thrift/server/TSimpleServer.hx
+++ b/lib/haxe/src/org/apache/thrift/server/TSimpleServer.hx
@@ -33,15 +33,14 @@ class TSimpleServer extends TServer {
serverTransport : TServerTransport,
transportFactory : TTransportFactory = null,
protocolFactory : TProtocolFactory = null,
- logDelegate : Dynamic->Void = null) {
+ logger : Dynamic->Void = null) {
super( processor, serverTransport,
transportFactory, transportFactory,
protocolFactory, protocolFactory,
- logDelegate);
+ logger);
}
-
public override function Serve() : Void
{
try
@@ -102,12 +101,15 @@ class TSimpleServer extends TServer {
}
catch( ttx : TTransportException)
{
- // Usually a client disconnect, expected
+ // Usually a client disconnect, expected
+ }
+ catch( pex : TProtocolException)
+ {
+ logDelegate(pex); // Unexpected
}
catch( e : Dynamic)
{
- // Unexpected
- logDelegate(e);
+ logDelegate(e); // Unexpected
}
// Fire deleteContext server event after client disconnects
diff --git a/lib/haxe/src/org/apache/thrift/transport/TFramedTransport.hx b/lib/haxe/src/org/apache/thrift/transport/TFramedTransport.hx
index 5f0168a54..cef82ef61 100644
--- a/lib/haxe/src/org/apache/thrift/transport/TFramedTransport.hx
+++ b/lib/haxe/src/org/apache/thrift/transport/TFramedTransport.hx
@@ -21,6 +21,7 @@ package org.apache.thrift.transport;
import org.apache.thrift.transport.*;
+import haxe.io.Eof;
import haxe.io.Bytes;
import haxe.io.BytesBuffer;
import haxe.io.BytesOutput;
@@ -73,31 +74,41 @@ class TFramedTransport extends TTransport
}
public override function read(buf : BytesBuffer, off : Int, len : Int) : Int {
- var data = Bytes.alloc(len);
-
- if (readBuffer_ != null) {
- var got : Int = readBuffer_.readBytes(data, off, len);
- if (got > 0) {
- buf.addBytes(data,0,got);
- return got;
+ try {
+ var data = Bytes.alloc(len);
+
+ if ((readBuffer_ != null) && (readBuffer_.position < readBuffer_.length)) {
+ var got : Int = readBuffer_.readBytes(data, off, len);
+ if (got > 0) {
+ buf.addBytes(data,0,got);
+ return got;
+ };
};
- };
- // Read another frame of data
- readFrame();
+ // Read another frame of data
+ readFrame();
- var got = readBuffer_.readBytes(data, off, len);
- buf.addBytes(data,0,got);
- return got;
+ var got = readBuffer_.readBytes(data, off, len);
+ buf.addBytes(data,0,got);
+ return got;
+ }
+ catch (eof : Eof) {
+ throw new TTransportException(TTransportException.END_OF_FILE, 'Can\'t read $len bytes!');
+ }
}
function readFrameSize() : Int {
- var buffer = new BytesBuffer();
- var len = transport_.readAll( buffer, 0, 4);
- var inp = new BytesInput( buffer.getBytes(), 0, 4);
- inp.bigEndian = true;
- return inp.readInt32();
+ try {
+ var buffer = new BytesBuffer();
+ var len = transport_.readAll( buffer, 0, 4);
+ var inp = new BytesInput( buffer.getBytes(), 0, 4);
+ inp.bigEndian = true;
+ return inp.readInt32();
+ }
+ catch(eof : Eof) {
+ throw new TTransportException(TTransportException.END_OF_FILE, 'Can\'t read 4 bytes!');
+ }
}
@@ -111,10 +122,15 @@ class TFramedTransport extends TTransport
throw new TTransportException(TTransportException.UNKNOWN, 'Frame size ($size) larger than max length ($maxLength_)!');
};
- var buffer = new BytesBuffer();
- size = transport_.readAll( buffer, 0, size);
- readBuffer_ = new BytesInput( buffer.getBytes(), 0, size);
- readBuffer_.bigEndian = true;
+ try {
+ var buffer = new BytesBuffer();
+ size = transport_.readAll( buffer, 0, size);
+ readBuffer_ = new BytesInput( buffer.getBytes(), 0, size);
+ readBuffer_.bigEndian = true;
+ }
+ catch(eof : Eof) {
+ throw new TTransportException(TTransportException.END_OF_FILE, 'Can\'t read $size bytes!');
+ }
}
public override function write(buf : Bytes, off : Int, len : Int) : Void {
@@ -135,7 +151,7 @@ class TFramedTransport extends TTransport
writeFrameSize(len);
transport_.write(buf, 0, len);
- transport_.flush();
+ transport_.flush(callback);
}
}
diff --git a/lib/haxe/src/org/apache/thrift/transport/TServerSocket.hx b/lib/haxe/src/org/apache/thrift/transport/TServerSocket.hx
index f38b58459..586a8b6bf 100644
--- a/lib/haxe/src/org/apache/thrift/transport/TServerSocket.hx
+++ b/lib/haxe/src/org/apache/thrift/transport/TServerSocket.hx
@@ -43,13 +43,13 @@ class TServerSocket extends TServerTransport {
private var _port : Int = 0;
// Timeout for client sockets from accept
- private var _clientTimeout : Int = 0;
+ private var _clientTimeout : Float = 0;
// Whether or not to wrap new TSocket connections in buffers
private var _useBufferedSockets : Bool = false;
- public function new( port : Int, clientTimeout : Int = 0, useBufferedSockets : Bool = false)
+ public function new( port : Int, clientTimeout : Float = 0, useBufferedSockets : Bool = false)
{
_port = port;
_clientTimeout = clientTimeout;
diff --git a/lib/haxe/src/org/apache/thrift/transport/TSocket.hx b/lib/haxe/src/org/apache/thrift/transport/TSocket.hx
index 9d5e2dc39..b6f2119bf 100644
--- a/lib/haxe/src/org/apache/thrift/transport/TSocket.hx
+++ b/lib/haxe/src/org/apache/thrift/transport/TSocket.hx
@@ -83,6 +83,7 @@ class TSocket extends TTransport {
#else
this.host = new Host(host);
#end
+
this.port = port;
}
@@ -143,7 +144,7 @@ class TSocket extends TTransport {
#else
- socket.waitForRead();
+ //socket.waitForRead(); - no, this ignores timeout and blocks infinitely
if(readCount < off) {
input.read(off-readCount);
readCount = off;
@@ -208,7 +209,6 @@ class TSocket extends TTransport {
}
var bytes = outbuf.buffer;
-
#else
var bytes = obuffer.getBytes();
@@ -222,11 +222,13 @@ class TSocket extends TTransport {
ioCallback = callback;
try {
readCount = 0;
+
#if js
output.send( bytes);
#else
output.writeBytes( bytes, 0, bytes.length);
#end
+
if(ioCallback != null) {
ioCallback(null); // success call
}
@@ -260,15 +262,14 @@ class TSocket extends TTransport {
}
#elseif flash
-
var socket = new Socket();
socket.connect(host, port);
#else
-
var socket = new Socket();
socket.setBlocking(true);
socket.setFastSend(true);
+ socket.setTimeout(5.0);
socket.connect(host, port);
#end
@@ -286,10 +287,12 @@ class TSocket extends TTransport {
#if (flash || js)
output = socket;
- input = socket;
+ input = socket;
+
#else
- output = socket.output;
- input = socket.input;
+ output = socket.output;
+ input = socket.input;
+
#end
}