/* * 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 thing - the map to print * @return map - returns the map 'thing' * * @param thing */ public function testMap(thing:IntMap):IntMap { 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 thing - the map to print * @return map - returns the map 'thing' * * @param thing */ public function testStringMap(thing:StringMap):StringMap { 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 thing - the set to print * @return set - returns the set '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 thing - the list to print * @return list - returns the list 'thing' * * @param thing */ public function testList(thing:List):List { 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> - 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> { trace("testMapMap(" + hello + ")"); var mapmap = new IntMap>(); var pos = new IntMap(); var neg = new IntMap(); 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 => , }, * } * @return map> - 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 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, 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(); }; } }