* Changing default timeout for start maintenance. * Upgrading dependencies to gorealis v2 and thrift 0.12.0 * Refactored to update to gorealis v2.
479 lines
13 KiB
Haxe
479 lines
13 KiB
Haxe
/*
|
|
* 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.
|
|
*/
|
|
|
|
package;
|
|
|
|
import org.apache.thrift.*;
|
|
import org.apache.thrift.protocol.*;
|
|
import org.apache.thrift.transport.*;
|
|
import org.apache.thrift.server.*;
|
|
import org.apache.thrift.meta_data.*;
|
|
import org.apache.thrift.helper.*;
|
|
|
|
import haxe.Int32;
|
|
import haxe.Int64;
|
|
import haxe.io.Bytes;
|
|
import haxe.ds.IntMap;
|
|
import haxe.ds.StringMap;
|
|
import haxe.ds.ObjectMap;
|
|
|
|
import thrift.test.*; // generated code
|
|
|
|
|
|
class TestServerHandler implements ThriftTest {
|
|
|
|
public var server:TServer;
|
|
|
|
public function new() {
|
|
}
|
|
|
|
/**
|
|
* Prints "testVoid()" and returns nothing.
|
|
*/
|
|
public function testVoid():Void
|
|
{
|
|
trace("testVoid()");
|
|
}
|
|
|
|
/**
|
|
* Prints 'testBool("%s")' where '%s' with thing as 'true' or 'false'
|
|
* @param bool thing - the bool data to print
|
|
* @return bool - returns the bool 'thing'
|
|
*
|
|
* @param thing
|
|
*/
|
|
public function testBool(thing : Bool) : Bool
|
|
{
|
|
trace('testBool($thing)');
|
|
return thing;
|
|
}
|
|
|
|
/**
|
|
* Prints 'testString("%s")' with thing as '%s'
|
|
* @param string thing - the string to print
|
|
* @return string - returns the string 'thing'
|
|
*
|
|
* @param thing
|
|
*/
|
|
public function testString(thing:String):String
|
|
{
|
|
trace("teststring(\"" + thing + "\")");
|
|
return thing;
|
|
}
|
|
|
|
/**
|
|
* Prints 'testByte("%d")' with thing as '%d'
|
|
* @param byte thing - the byte to print
|
|
* @return byte - returns the byte 'thing'
|
|
*
|
|
* @param thing
|
|
*/
|
|
public function testByte(thing:haxe.Int32):haxe.Int32
|
|
{
|
|
trace("testByte(" + thing + ")");
|
|
return thing;
|
|
}
|
|
|
|
/**
|
|
* Prints 'testI32("%d")' with thing as '%d'
|
|
* @param i32 thing - the i32 to print
|
|
* @return i32 - returns the i32 'thing'
|
|
*
|
|
* @param thing
|
|
*/
|
|
public function testI32(thing:haxe.Int32):haxe.Int32
|
|
{
|
|
trace("testI32(" + thing + ")");
|
|
return thing;
|
|
}
|
|
|
|
/**
|
|
* Prints 'testI64("%d")' with thing as '%d'
|
|
* @param i64 thing - the i64 to print
|
|
* @return i64 - returns the i64 'thing'
|
|
*
|
|
* @param thing
|
|
*/
|
|
public function testI64(thing:haxe.Int64):haxe.Int64
|
|
{
|
|
trace("testI64(" + thing + ")");
|
|
return thing;
|
|
}
|
|
|
|
/**
|
|
* Prints 'testDouble("%f")' with thing as '%f'
|
|
* @param double thing - the double to print
|
|
* @return double - returns the double 'thing'
|
|
*
|
|
* @param thing
|
|
*/
|
|
public function testDouble(thing:Float):Float
|
|
{
|
|
trace("testDouble(" + thing + ")");
|
|
return thing;
|
|
}
|
|
|
|
/**
|
|
* Prints 'testBinary("%s")' where '%s' is a hex-formatted string of thing's data
|
|
* @param binary thing - the binary data to print
|
|
* @return binary - returns the binary 'thing'
|
|
*
|
|
* @param thing
|
|
*/
|
|
public function testBinary(thing : haxe.io.Bytes) : haxe.io.Bytes
|
|
{
|
|
var hex = "";
|
|
for ( i in 0 ... thing.length) {
|
|
hex += StringTools.hex( thing.get(i), 2);
|
|
}
|
|
trace('testBinary($hex)');
|
|
return thing;
|
|
}
|
|
|
|
/**
|
|
* Prints 'testStruct("{%s}")' where thing has been formatted
|
|
* into a string of comma separated values
|
|
* @param Xtruct thing - the Xtruct to print
|
|
* @return Xtruct - returns the Xtruct 'thing'
|
|
*
|
|
* @param thing
|
|
*/
|
|
public function testStruct(thing:Xtruct):Xtruct
|
|
{
|
|
trace("testStruct({" +
|
|
"\"" + thing.string_thing + "\", " +
|
|
thing.byte_thing + ", " +
|
|
thing.i32_thing + ", " +
|
|
Int64.toStr(thing.i64_thing) + "})");
|
|
return thing;
|
|
}
|
|
|
|
/**
|
|
* Prints 'testNest("{%s}")' where thing has been formatted
|
|
* into a string of the nested struct
|
|
* @param Xtruct2 thing - the Xtruct2 to print
|
|
* @return Xtruct2 - returns the Xtruct2 'thing'
|
|
*
|
|
* @param thing
|
|
*/
|
|
public function testNest(nest:Xtruct2):Xtruct2
|
|
{
|
|
var thing:Xtruct = nest.struct_thing;
|
|
trace("testNest({" +
|
|
nest.byte_thing + ", {" +
|
|
"\"" + thing.string_thing + "\", " +
|
|
thing.byte_thing + ", " +
|
|
thing.i32_thing + ", " +
|
|
Int64.toStr(thing.i64_thing) + "}, " +
|
|
nest.i32_thing + "})");
|
|
return nest;
|
|
}
|
|
|
|
/**
|
|
* Prints 'testMap("{%s")' where thing has been formatted
|
|
* into a string of 'key => value' pairs
|
|
* separated by commas and new lines
|
|
* @param map<i32,i32> thing - the map<i32,i32> to print
|
|
* @return map<i32,i32> - returns the map<i32,i32> 'thing'
|
|
*
|
|
* @param thing
|
|
*/
|
|
public function testMap(thing:IntMap<haxe.Int32>):IntMap<haxe.Int32>
|
|
{
|
|
trace("testMap({");
|
|
var first:Bool = true;
|
|
for (key in thing.keys()) {
|
|
if (first) {
|
|
first = false;
|
|
} else {
|
|
trace(", ");
|
|
};
|
|
trace(key + " => " + thing.get(key));
|
|
};
|
|
trace("})");
|
|
return thing;
|
|
}
|
|
|
|
/**
|
|
* Prints 'testStringMap("{%s}")' where thing has been formatted
|
|
* into a string of 'key => value' pairs
|
|
* separated by commas and new lines
|
|
* @param map<string,string> thing - the map<string,string> to print
|
|
* @return map<string,string> - returns the map<string,string> 'thing'
|
|
*
|
|
* @param thing
|
|
*/
|
|
public function testStringMap(thing:StringMap<String>):StringMap<String>
|
|
{
|
|
trace("testStringMap({");
|
|
var first:Bool = true;
|
|
for (key in thing.keys()) {
|
|
if (first) {
|
|
first = false;
|
|
} else {
|
|
trace(", ");
|
|
};
|
|
trace(key + " => " + thing.get(key));
|
|
};
|
|
trace("})");
|
|
return thing;
|
|
}
|
|
|
|
/**
|
|
* Prints 'testSet("{%s}")' where thing has been formatted
|
|
* into a string of values
|
|
* separated by commas and new lines
|
|
* @param set<i32> thing - the set<i32> to print
|
|
* @return set<i32> - returns the set<i32> 'thing'
|
|
*
|
|
* @param thing
|
|
*/
|
|
public function testSet(thing:IntSet):IntSet
|
|
{
|
|
trace("testSet({");
|
|
var first:Bool = true;
|
|
for (elem in thing) {
|
|
if (first) {
|
|
first = false;
|
|
} else {
|
|
trace(", ");
|
|
};
|
|
trace(elem);
|
|
};
|
|
trace("})");
|
|
return thing;
|
|
}
|
|
|
|
/**
|
|
* Prints 'testList("{%s}")' where thing has been formatted
|
|
* into a string of values
|
|
* separated by commas and new lines
|
|
* @param list<i32> thing - the list<i32> to print
|
|
* @return list<i32> - returns the list<i32> 'thing'
|
|
*
|
|
* @param thing
|
|
*/
|
|
public function testList(thing:List<haxe.Int32>):List<haxe.Int32>
|
|
{
|
|
trace("testList({");
|
|
var first:Bool = true;
|
|
for (elem in thing) {
|
|
if (first) {
|
|
first = false;
|
|
} else {
|
|
trace(", ");
|
|
};
|
|
trace(elem);
|
|
};
|
|
trace("})");
|
|
return thing;
|
|
}
|
|
|
|
/**
|
|
* Prints 'testEnum("%d")' where thing has been formatted into it's numeric value
|
|
* @param Numberz thing - the Numberz to print
|
|
* @return Numberz - returns the Numberz 'thing'
|
|
*
|
|
* @param thing
|
|
*/
|
|
public function testEnum(thing:Int):Int
|
|
{
|
|
trace("testEnum(" + thing + ")");
|
|
return thing;
|
|
}
|
|
|
|
/**
|
|
* Prints 'testTypedef("%d")' with thing as '%d'
|
|
* @param UserId thing - the UserId to print
|
|
* @return UserId - returns the UserId 'thing'
|
|
*
|
|
* @param thing
|
|
*/
|
|
public function testTypedef(thing:haxe.Int64):haxe.Int64
|
|
{
|
|
trace("testTypedef(" + thing + ")");
|
|
return thing;
|
|
}
|
|
|
|
/**
|
|
* Prints 'testMapMap("%d")' with hello as '%d'
|
|
* @param i32 hello - the i32 to print
|
|
* @return map<i32,map<i32,i32>> - returns a dictionary with these values:
|
|
* {-4 => {-4 => -4, -3 => -3, -2 => -2, -1 => -1, },
|
|
* 4 => {1 => 1, 2 => 2, 3 => 3, 4 => 4, }, }
|
|
*
|
|
* @param hello
|
|
*/
|
|
public function testMapMap(hello:haxe.Int32):IntMap<IntMap<haxe.Int32>>
|
|
{
|
|
trace("testMapMap(" + hello + ")");
|
|
var mapmap = new IntMap<IntMap<Int>>();
|
|
var pos = new IntMap<Int>();
|
|
var neg = new IntMap<Int>();
|
|
for (i in 1 ... 5) {
|
|
pos.set(i, i);
|
|
neg.set(-i, -i);
|
|
};
|
|
mapmap.set(4, pos);
|
|
mapmap.set(-4, neg);
|
|
return mapmap;
|
|
}
|
|
|
|
/**
|
|
* So you think you've got this all worked, out eh?
|
|
*
|
|
* Creates a the returned map with these values and prints it out:
|
|
* { 1 => { 2 => argument,
|
|
* 3 => argument,
|
|
* },
|
|
* 2 => { 6 => <empty Insanity struct>, },
|
|
* }
|
|
* @return map<UserId, map<Numberz,Insanity>> - a map with the above values
|
|
*
|
|
* @param argument
|
|
*/
|
|
public function testInsanity(argument : Insanity) : Int64Map< IntMap< Insanity>>
|
|
{
|
|
trace("testInsanity()");
|
|
|
|
var first_map = new IntMap< Insanity>();
|
|
first_map.set(Numberz.TWO, argument);
|
|
first_map.set(Numberz.THREE, argument);
|
|
|
|
var second_map = new IntMap< Insanity>();
|
|
var looney = new Insanity();
|
|
second_map.set(Numberz.SIX, looney);
|
|
|
|
var insane = new Int64Map< IntMap< Insanity>>();
|
|
insane.set( Int64.make(0,1), first_map);
|
|
insane.set( Int64.make(0,2), second_map);
|
|
|
|
return insane;
|
|
}
|
|
|
|
/**
|
|
* Prints 'testMulti()'
|
|
* @param byte arg0 -
|
|
* @param i32 arg1 -
|
|
* @param i64 arg2 -
|
|
* @param map<i16, string> arg3 -
|
|
* @param Numberz arg4 -
|
|
* @param UserId arg5 -
|
|
* @return Xtruct - returns an Xtruct
|
|
* with string_thing = "Hello2, byte_thing = arg0, i32_thing = arg1
|
|
* and i64_thing = arg2
|
|
*
|
|
* @param arg0
|
|
* @param arg1
|
|
* @param arg2
|
|
* @param arg3
|
|
* @param arg4
|
|
* @param arg5
|
|
*/
|
|
public function testMulti(arg0:haxe.Int32, arg1:haxe.Int32, arg2:haxe.Int64,
|
|
arg3:IntMap<String>, arg4:Int, arg5:haxe.Int64):Xtruct
|
|
{
|
|
trace("testMulti()");
|
|
var hello = new Xtruct();
|
|
hello.string_thing = "Hello2";
|
|
hello.byte_thing = arg0;
|
|
hello.i32_thing = arg1;
|
|
hello.i64_thing = arg2;
|
|
return hello;
|
|
}
|
|
|
|
/**
|
|
* Print 'testException(%s)' with arg as '%s'
|
|
* @param string arg - a string indication what type of exception to throw
|
|
* if arg == "Xception" throw Xception with errorCode = 1001 and message = arg
|
|
* elsen if arg == "TException" throw TException
|
|
* else do not throw anything
|
|
*
|
|
* @param arg
|
|
*/
|
|
public function testException(arg:String):Void
|
|
{
|
|
trace("testException(" + arg + ")");
|
|
if (arg == "Xception") {
|
|
var x = new Xception();
|
|
x.errorCode = 1001;
|
|
x.message = arg;
|
|
throw x;
|
|
};
|
|
if (arg == "TException") {
|
|
throw new TException();
|
|
};
|
|
return;
|
|
}
|
|
|
|
/**
|
|
* Print 'testMultiException(%s, %s)' with arg0 as '%s' and arg1 as '%s'
|
|
* @param string arg - a string indication what type of exception to throw
|
|
* if arg0 == "Xception"
|
|
* throw Xception with errorCode = 1001 and message = "This is an Xception"
|
|
* else if arg0 == "Xception2"
|
|
* throw Xception2 with errorCode = 2002 and message = "This is an Xception2"
|
|
* else do not throw anything
|
|
* @return Xtruct - an Xtruct with string_thing = arg1
|
|
*
|
|
* @param arg0
|
|
* @param arg1
|
|
*/
|
|
public function testMultiException(arg0:String, arg1:String):Xtruct
|
|
{
|
|
trace("testMultiException(" + arg0 + ", " + arg1 + ")");
|
|
if (arg0 == "Xception") {
|
|
var x = new Xception();
|
|
x.errorCode = 1001;
|
|
x.message = "This is an Xception";
|
|
throw x;
|
|
} else if (arg0 == "Xception2") {
|
|
var x = new Xception2();
|
|
x.errorCode = 2002;
|
|
x.struct_thing = new Xtruct();
|
|
x.struct_thing.string_thing = "This is an Xception2";
|
|
throw x;
|
|
};
|
|
var result = new Xtruct();
|
|
result.string_thing = arg1;
|
|
return result;
|
|
}
|
|
|
|
/**
|
|
* Print 'testOneway(%d): Sleeping...' with secondsToSleep as '%d'
|
|
* sleep 'secondsToSleep'
|
|
* Print 'testOneway(%d): done sleeping!' with secondsToSleep as '%d'
|
|
* @param i32 secondsToSleep - the number of seconds to sleep
|
|
*
|
|
* @param secondsToSleep
|
|
*/
|
|
public function testOneway(secondsToSleep:haxe.Int32):Void
|
|
{
|
|
trace("testOneway(" + secondsToSleep + "), sleeping...");
|
|
Sys.sleep(secondsToSleep);
|
|
trace("testOneway finished");
|
|
}
|
|
|
|
public function testStop():Void
|
|
{
|
|
if (server != null) {
|
|
server.Stop();
|
|
};
|
|
}
|
|
}
|