diff options
author | iskm <iskm@users.noreply.github.com> | 2017-04-09 22:49:46 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-04-09 22:49:46 -0400 |
commit | 385c4f4664ae8157e62f118f15d4c670a4c1356b (patch) | |
tree | dcb37e29867a6294e8a321ea535e6e9ecd03c296 /feasibility_analysis | |
parent | 4890b61f08698a84e261f162dc2acd404bcc6b6b (diff) | |
parent | 44c715c55c239495da8f780276866c0041f04139 (diff) |
Merge pull request #1 from oplS17projects/mango0.2
Mango
Diffstat (limited to 'feasibility_analysis')
-rw-r--r-- | feasibility_analysis/gui/windows.rkt | 9 | ||||
-rw-r--r-- | feasibility_analysis/gui/windows2.rkt | 15 | ||||
-rw-r--r-- | feasibility_analysis/tcpevents/README.md | 1 | ||||
-rw-r--r-- | feasibility_analysis/tcpevents/server.rkt | 39 | ||||
-rw-r--r-- | feasibility_analysis/tcpvanilla/README.md | 20 | ||||
-rw-r--r-- | feasibility_analysis/tcpvanilla/client.rkt | 72 | ||||
-rw-r--r-- | feasibility_analysis/tcpvanilla/client2.rkt | 43 | ||||
-rw-r--r-- | feasibility_analysis/tcpvanilla/server.rkt | 58 | ||||
-rw-r--r-- | feasibility_analysis/tcpvanilla/tcptalk.rkt | 30 |
9 files changed, 0 insertions, 287 deletions
diff --git a/feasibility_analysis/gui/windows.rkt b/feasibility_analysis/gui/windows.rkt deleted file mode 100644 index 4524673..0000000 --- a/feasibility_analysis/gui/windows.rkt +++ /dev/null @@ -1,9 +0,0 @@ -#lang racket - -(require racket/gui/base) - -;; Create a new window via the frame class -(define frame (new frame% [label "Example"])) - -;; Show frame(window) by calling it show method -(send frame show #t) ;; you call object methods via send diff --git a/feasibility_analysis/gui/windows2.rkt b/feasibility_analysis/gui/windows2.rkt deleted file mode 100644 index 3f60c80..0000000 --- a/feasibility_analysis/gui/windows2.rkt +++ /dev/null @@ -1,15 +0,0 @@ -#lang racket - -(require racket/gui/base) - -(define frame (new frame% - [label "Example"] - [width 300] - [height 300])) -(new canvas% [parent frame] - [paint-callback - (lambda (canvas dc) - (send dc set-scale 3 3) - (send dc set-text-foreground "blue") - (send dc draw-text "Don't Panic!" 0 0))]) -(send frame show #t) diff --git a/feasibility_analysis/tcpevents/README.md b/feasibility_analysis/tcpevents/README.md deleted file mode 100644 index 7c3ec21..0000000 --- a/feasibility_analysis/tcpevents/README.md +++ /dev/null @@ -1 +0,0 @@ -TCP communication racket concepts of events. For more see the racket guide. diff --git a/feasibility_analysis/tcpevents/server.rkt b/feasibility_analysis/tcpevents/server.rkt deleted file mode 100644 index 4313bda..0000000 --- a/feasibility_analysis/tcpevents/server.rkt +++ /dev/null @@ -1,39 +0,0 @@ -#lang racket - -(define (serve in-port out-port) - (let loop [] - (define evt (sync/timeout 2 - (read-line-evt in-port 'any) - (thread-receive-evt))) - (cond - [(not evt) - (displayln "Timed out, exiting") - (tcp-abandon-port in-port) - (tcp-abandon-port out-port)] - [(string? evt) - (fprintf out-port "~a~n" evt) - (flush-output out-port) - (loop)] - [else - (printf "Received a message in mailbox: ~a~n" - (thread-receive)) - (loop)]))) - -(define port-num 4321) -(define (start-server) - (define listener (tcp-listen port-num)) - (thread - (lambda () - (define-values [in-port out-port] (tcp-accept listener)) - (serve in-port out-port)))) - -(start-server) - -(define client-thread - (thread - (lambda () - (define-values [in-port out-port] (tcp-connect "localhost" port-num)) - (display "first\nsecond\nthird\n" out-port) - (flush-output out-port) - ; copy-port will block until EOF is read from in-port - (copy-port in-port (current-output-port))))) diff --git a/feasibility_analysis/tcpvanilla/README.md b/feasibility_analysis/tcpvanilla/README.md deleted file mode 100644 index b8e2883..0000000 --- a/feasibility_analysis/tcpvanilla/README.md +++ /dev/null @@ -1,20 +0,0 @@ -a simple experiment on communication via tcp ports - -a server runs continously servicing clients. Clients connect, send a message, and -server replies with a message. Message should appear in each separate REPL area -prompt - -run server.rkt in a REPL -``` -,en server.rkt -(define stop (serve 8080)) ;; starts serve listening at port 8080 -(stop) ;; to stop server and free the ports - -``` - -run client.rkt in a separate REPL -``` -,en client.rkt -(define stop (client 8080)) ;; starts client talking to server at port 8080 - -``` diff --git a/feasibility_analysis/tcpvanilla/client.rkt b/feasibility_analysis/tcpvanilla/client.rkt deleted file mode 100644 index 967d2b9..0000000 --- a/feasibility_analysis/tcpvanilla/client.rkt +++ /dev/null @@ -1,72 +0,0 @@ -#lang racket - -;; Both `server' and `accept-and-handle' change -;; to use a custodian. -;; To start server -;; (define stop (client 8080)) -;; use your web browser to connect localhost:8080 greeted with "hello world" -;; (stop) to close the server - -(define (client port-no) - (define main-client-cust (make-custodian)) - (parameterize ([current-custodian main-client-cust]) - ;; connect to server at port 8080 - (define-values (in out) (tcp-connect "localhost" port-no)) ;; define values - ;; binds to multiple values akin to unpacking tuples in python - ; (thread (lambda () - (chat in out) - (close-input-port in) - (close-output-port out)) - (custodian-shutdown-all main-client-cust)) - - ; (sleep 60) ;; run for 3 minutes then close - ; (define (loop) - ; (write (read-line (current-input-port)) out) - ; (flush-output out) - ; (write (read-line in) (current-output-port)) - ; (define listener (tcp-listen port-no 5 #t)) - ; (define (loop) - ; (accept-and-handle listener) - ; (loop)) - ; (thread loop))) - ; (custodian-shutdown-all main-client-cust) - #| (lambda () |# - ; (displayln "Goodbye, shutting down client\n") - #| (custodian-shutdown-all main-client-cust)) |# - -(define (chat in out) - ; (driver-loop in out) - (writeln "Ibrahim: Hello, anyone in chat?" out) - (flush-output out) ;; ports are buffered in racket must flush or you - ;; will read #eof - (sleep 10) ;; wait 10 seconds - (define serv-message (read-line in)) - (displayln serv-message) ;; read the servers replay message which is original - ;; with echo appended to it - ) - -; (define input-prompt "Hermes: ") - -(define (driver-loop in out) - ; (prompt-for-input input-prompt) - (display ">>> ") - (define input (read)) - (writeln (string-append "Ibrahim: " input) out) - (flush-output out) - ; (sleep 10) - (define output (read-line in)) - (displayln output) - (driver-loop in out)) - - -#| (let ((input (read))) |# -; ) -; (let ((input (read))) -; (let ((output (mc-eval input the-global-environment))) -; (announce-output output-prompt) -; (user-print output))) -; (driver-loop)) -; -; (define (announce-output string) -; (display string)) -#| |# diff --git a/feasibility_analysis/tcpvanilla/client2.rkt b/feasibility_analysis/tcpvanilla/client2.rkt deleted file mode 100644 index 47e3052..0000000 --- a/feasibility_analysis/tcpvanilla/client2.rkt +++ /dev/null @@ -1,43 +0,0 @@ -#lang racket - -;; Both `server' and `accept-and-handle' change -;; to use a custodian. -;; To start server -;; (define stop (client 8080)) -;; use your web browser to connect localhost:8080 greeted with "hello world" -;; (stop) to close the server - -(define (client port-no) - (define main-client-cust (make-custodian)) - (parameterize ([current-custodian main-client-cust]) - ;; connect to server at port 8080 - (define-values (in out) (tcp-connect "localhost" port-no)) ;; define values - ;; binds to multiple values akin to unpacking tuples in python - (thread (lambda () - (send-message in out) - (close-input-port in) - (close-output-port out)))) - (sleep 20) - ; (define (loop) - ; (write (read-line (current-input-port)) out) - ; (flush-output out) - ; (write (read-line in) (current-output-port)) - ; (define listener (tcp-listen port-no 5 #t)) - ; (define (loop) - ; (accept-and-handle listener) - ; (loop)) - ; (thread loop))) - (custodian-shutdown-all main-client-cust) - #| (lambda () |# - ; (displayln "Goodbye, shutting down client\n") - #| (custodian-shutdown-all main-client-cust)) |#) - -(define (send-message input-port output-port) - (writeln "Doug: Hello, how's it going?" output-port) - (flush-output output-port) ;; ports are buffered in racket must flush or you - ;; will read #eof - (sleep 10) ;; wait 10 seconds - (define serv-message (read-line input-port)) - (displayln serv-message) ;; read the servers replay message which is original - ;; with echo appended to it - ) diff --git a/feasibility_analysis/tcpvanilla/server.rkt b/feasibility_analysis/tcpvanilla/server.rkt deleted file mode 100644 index bf72aff..0000000 --- a/feasibility_analysis/tcpvanilla/server.rkt +++ /dev/null @@ -1,58 +0,0 @@ -#lang racket - -;; Both `server' and `accept-and-handle' change -;; to use a custodian. -;; To start server -;; (define stop (serve 8080)) -;; use your web browser to connect localhost:8080 greeted with "hello world" -;; (stop) to close the server - -(define (serve port-no) - (define main-cust (make-custodian)) - (parameterize ([current-custodian main-cust]) - (define listener (tcp-listen port-no 5 #t)) - (define (loop) - (accept-and-handle listener) - (loop)) - (thread loop)) - (lambda () - (displayln "\nGoodbye, shutting down all services\n") - (custodian-shutdown-all main-cust))) - -(define (accept-and-handle listener) - (define cust (make-custodian)) - (parameterize ([current-custodian cust]) - (define-values (in out) (tcp-accept listener)) - (thread (lambda () - (handle in out) ;; this handles connection with that specific client - (close-input-port in) - (close-output-port out)))) - ;; Watcher thread: - (thread (lambda () - (sleep 120) - (custodian-shutdown-all cust)))) - -(define (handle in out) - ; (server-loop in out) - (sleep 5) ;; wait 5 seconds to guarantee client has already send message - (define echo (read-line in)) ;; bind message to echo - (displayln (string-append echo "\n")) - ; echo back the message, appending echo - ; could regex match the input to extract the name - (writeln "Admin: Hello there" out) ;; append "echo " to echo and send back - (flush-output out) -) - -(define input-prompt "Hermes: ") - -(define (server-loop in out) - (define echo (read-line in)) - (displayln echo) - (display ">>> ") - - (define input (read)) - (writeln (string-append "Admin: " input) out) - (flush-output out) - ; (sleep 10) - (server-loop in out)) - diff --git a/feasibility_analysis/tcpvanilla/tcptalk.rkt b/feasibility_analysis/tcpvanilla/tcptalk.rkt deleted file mode 100644 index d069851..0000000 --- a/feasibility_analysis/tcpvanilla/tcptalk.rkt +++ /dev/null @@ -1,30 +0,0 @@ -#lang racket - -(define listener (tcp-listen 8083 5 #t)) ;; listener to service connection requests -;; client attempts to connect. Receives an input and output port -(define-values (client-in client-out) (tcp-connect "localhost" 8083)) -;; server accepts the connection request. Also gets a pair of ports -(define-values (server-in server-out) (tcp-accept listener)) - -;; client sends identifying message -(display (string-append "Client:My name is " "Ibrahim" "\n") - client-out) -(flush-output client-out) ;; must flush as ports are buffered in racket - -;; server receives and reads it -;; cooler if on separate racket instances -(read-line server-in) ;; --> "Client:My name is #hostname. -;; server replies -(display (string-append "Server:Hi " "Ibrahim" "\n") server-out) -(flush-output server-out) ;; flush flush - -;; client displays server message -(read-line client-in) -(close-output-port server-out) -(close-output-port client-out) -(read-line client-in) ;; --> eof object #eof -(read-line server-in) ;; --> eof object #eof -(tcp-close listener) -; (custodian-shutdown-all (current-custodian)) ;; release all resources including - ;; tcp, file, custom ports - ;; application exits |