Max-Gerd Retzlaff | 04057ac | 2022-08-23 17:38:34 +0200 | [diff] [blame] | 1 | (in-package #:cl-user) |
| 2 | |
| 3 | ;;;; Licensed under the Apache License, Version 2.0 (the "License"); |
| 4 | ;;;; you may not use this file except in compliance with the License. |
| 5 | ;;;; You may obtain a copy of the License at |
| 6 | ;;;; |
| 7 | ;;;; http://www.apache.org/licenses/LICENSE-2.0 |
| 8 | ;;;; |
| 9 | ;;;; Unless required by applicable law or agreed to in writing, software |
| 10 | ;;;; distributed under the License is distributed on an "AS IS" BASIS, |
| 11 | ;;;; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| 12 | ;;;; See the License for the specific language governing permissions and |
| 13 | ;;;; limitations under the License. |
| 14 | |
| 15 | (require "asdf") |
| 16 | (load (merge-pathnames "load-locally.lisp" *load-truename*)) |
Max-Gerd Retzlaff | 75bdba5 | 2022-08-23 19:03:48 +0200 | [diff] [blame] | 17 | (require "sb-grovel") ;; necessary for :net.didierverna.clon.termio |
| 18 | (asdf:load-asd (first (directory (merge-pathnames "../../lib/cl/externals/software/clon-*/termio/net.didierverna.clon.termio.asd" |
| 19 | *load-truename*)))) |
Max-Gerd Retzlaff | 04057ac | 2022-08-23 17:38:34 +0200 | [diff] [blame] | 20 | (asdf:load-system :net.didierverna.clon) |
| 21 | (asdf:load-asd (merge-pathnames "gen-cl/shared/thrift-gen-shared.asd" *load-truename*)) |
| 22 | (asdf:load-asd (merge-pathnames "gen-cl/tutorial/thrift-gen-tutorial.asd" *load-truename*)) |
| 23 | (asdf:load-asd (merge-pathnames "thrift-tutorial.asd" *load-truename*)) |
| 24 | (asdf:load-system :thrift-tutorial) |
| 25 | |
| 26 | (net.didierverna.clon:nickname-package) |
| 27 | |
| 28 | (defun main () |
| 29 | "Entry point for the binary." |
| 30 | (thrift:with-client (prot #u"thrift://127.0.0.1:9090") |
| 31 | (tutorial.calculator:ping prot) |
| 32 | (format t "ping()~%") |
| 33 | (format t "1 + 1 = ~a~%" (tutorial.calculator:add prot 1 1)) |
| 34 | (let ((work-instance (tutorial:make-work :num1 5 |
| 35 | :num2 0 |
| 36 | :op tutorial:operation.divide |
| 37 | :comment "Booya!"))) |
| 38 | (handler-case (format t |
| 39 | "5 / 0 = ~a - Oh, really? An exception should have been thrown here.~%" |
| 40 | (tutorial.calculator:calculate prot 1 work-instance)) |
| 41 | (tutorial:invalidoperation (e) |
| 42 | (format t "---~%(Expected) Invalid Operation caught: ~%~a~%---~%" e)))) |
| 43 | (let ((work-instance (tutorial:make-work :num1 15 |
| 44 | :num2 10 |
| 45 | :op tutorial:operation.subtract |
| 46 | :comment "Playing nice this time."))) |
| 47 | (handler-case (format t |
| 48 | "15 - 10 = ~a~%" |
| 49 | (tutorial.calculator:calculate prot 1 work-instance)) |
| 50 | (tutorial:invalidoperation (e) |
| 51 | (format t "---~%(Unexpected) Invalid Operation caught: ~%~a~%---~%" e)))) |
| 52 | (format t "Check log: ~a~%" (shared.shared-service:get-struct prot 1)))) |
| 53 | |
| 54 | (clon:dump "TutorialClient" main) |