| -- |
| -- 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. |
| -- |
| |
| module Server where |
| |
| import ThriftTest |
| import ThriftTest_Iface |
| import Data.Map as Map |
| import Control.Exception |
| import ThriftTest_Types |
| |
| import Thrift |
| import Thrift.Server |
| |
| |
| data TestHandler = TestHandler |
| instance ThriftTest_Iface TestHandler where |
| testVoid a = return () |
| testString a (Just s) = do print s; return s |
| testByte a (Just x) = do print x; return x |
| testI32 a (Just x) = do print x; return x |
| testI64 a (Just x) = do print x; return x |
| testDouble a (Just x) = do print x; return x |
| testStruct a (Just x) = do print x; return x |
| testNest a (Just x) = do print x; return x |
| testMap a (Just x) = do print x; return x |
| testSet a (Just x) = do print x; return x |
| testList a (Just x) = do print x; return x |
| testEnum a (Just x) = do print x; return x |
| testTypedef a (Just x) = do print x; return x |
| testMapMap a (Just x) = return (Map.fromList [(1,Map.fromList [(2,2)])]) |
| testInsanity a (Just x) = return (Map.fromList [(1,Map.fromList [(ONE,x)])]) |
| testMulti a a1 a2 a3 a4 a5 a6 = return (Xtruct Nothing Nothing Nothing Nothing) |
| testException a c = throw (Xception (Just 1) (Just "bya")) |
| testMultiException a c1 c2 = throw (Xception (Just 1) (Just "xyz")) |
| testOneway a (Just i) = do print i |
| |
| |
| main = do (runBasicServer TestHandler process 9090) |
| `Control.Exception.catch` |
| (\(TransportExn s t) -> print s) |