blob: c5e4d907490d94ef862cf210826255337ababab2 [file] [log] [blame]
David Reissea2cba82009-03-30 21:35:00 +00001--
2-- Licensed to the Apache Software Foundation (ASF) under one
3-- or more contributor license agreements. See the NOTICE file
4-- distributed with this work for additional information
5-- regarding copyright ownership. The ASF licenses this file
6-- to you under the Apache License, Version 2.0 (the
7-- "License"); you may not use this file except in compliance
8-- with the License. You may obtain a copy of the License at
9--
10-- http://www.apache.org/licenses/LICENSE-2.0
11--
12-- Unless required by applicable law or agreed to in writing,
13-- software distributed under the License is distributed on an
14-- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15-- KIND, either express or implied. See the License for the
16-- specific language governing permissions and limitations
17-- under the License.
18--
19
iproctorff8eb922007-07-25 19:06:13 +000020module Client where
Bryan Duxbury0781f2b2009-04-07 23:29:42 +000021
iproctorff8eb922007-07-25 19:06:13 +000022import ThriftTest_Client
23import ThriftTest_Types
iproctorff8eb922007-07-25 19:06:13 +000024import qualified Data.Map as Map
25import qualified Data.Set as Set
26import Control.Monad
Bryan Duxbury0781f2b2009-04-07 23:29:42 +000027import Control.Exception as CE
iproctorff8eb922007-07-25 19:06:13 +000028
Bryan Duxbury0781f2b2009-04-07 23:29:42 +000029import Network
30
31import Thrift
32import Thrift.Transport.Handle
33import Thrift.Protocol.Binary
34
35
36serverAddress = ("127.0.0.1", PortNumber 9090)
37
38main = do to <- hOpen serverAddress
39 let p = BinaryProtocol to
iproctorff8eb922007-07-25 19:06:13 +000040 let ps = (p,p)
41 print =<< testString ps "bya"
42 print =<< testByte ps 8
43 print =<< testByte ps (-8)
44 print =<< testI32 ps 32
45 print =<< testI32 ps (-32)
46 print =<< testI64 ps 64
47 print =<< testI64 ps (-64)
48 print =<< testDouble ps 3.14
49 print =<< testDouble ps (-3.14)
50 print =<< testMap ps (Map.fromList [(1,1),(2,2),(3,3)])
51 print =<< testList ps [1,2,3,4,5]
52 print =<< testSet ps (Set.fromList [1,2,3,4,5])
53 print =<< testStruct ps (Xtruct (Just "hi") (Just 4) (Just 5) Nothing)
Bryan Duxbury0781f2b2009-04-07 23:29:42 +000054 CE.catch (testException ps "e" >> print "bad") (\e -> print (e :: Xception))
55 CE.catch (testMultiException ps "e" "e2" >> print "ok") (\e -> print (e :: Xception))
56 CE.catch (CE.catch (testMultiException ps "e" "e2">> print "bad") (\e -> print (e :: Xception2))) (\(e :: SomeException) -> print "ok")
57 tClose to
David Reiss0c90f6f2008-02-06 22:18:40 +000058