Created
December 11, 2013 19:22
-
-
Save arjunguha/7916687 to your computer and use it in GitHub Desktop.
Basic
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
open Core.Std | |
open Async.Std | |
let print_reader (reader : Reader.t) : unit Deferred.t = | |
Pipe.iter (Reader.lines reader) | |
(fun (str: string) -> printf "Read from network: %s\n%!" str; return ()) | |
let write_lines (writer : Writer.t) : unit Deferred.t = | |
Pipe.iter (Reader.lines (Reader.create (Fd.stdin ()))) | |
(fun (str : string) -> | |
printf "Read from stdin: %s\n%!" str; | |
Writer.write writer str; | |
Writer.write writer "\n"; | |
Writer.flushed writer | |
>>| fun () -> | |
printf "Input: %!"; | |
()) | |
let service (reader : Reader.t) (writer : Writer.t) : unit Deferred.t = | |
Deferred.both (print_reader reader) (write_lines writer) | |
>>| fun _ -> () | |
let _ = match Array.to_list Sys.argv with | |
| [ _; "serve" ] -> | |
Tcp.Server.create (Tcp.on_port 9999) (fun sock -> service) >>| fun _ -> () | |
| [ _; "client" ] -> | |
Tcp.with_connection (Tcp.to_host_and_port "localhost" 9999) | |
(fun sock -> service) | |
| _ -> printf "Unknown argument.\n%!"; return () | |
let _ = never_returns (Scheduler.go ()) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment