ocaml-bert / echo_server.ml

Diff from to

echo_server.ml

     | ADDR_UNIX(_)->
 	prerr_endline "connection from the unix domain ... ";
   end;
-  let rec my_read_ sock buf start remain = 
-    let len = recv sock buf start remain [MSG_PEEK] in
-      begin match remain with 
-	| 0 -> (start+len, buf) ;
-	| r -> my_read_ sock buf (start+len) (r-len);
-      end;
-  in
-  let my_read sock len = 
-    let buf = String.create len in
-      my_read_ sock buf 0 len 
-  in
-  let (len, buffer) = my_read csock 1024 in
-    prerr_endline ((string_of_int len) ^ " bytes recv'd");
-    prerr_endline buffer;
+  let recv_term sock = 
+    let buf = String.create 1024 in
+    let rec recv_ start toread = 
+      let len = recv sock buf start toread [MSG_PEEK] in
+	prerr_endline ((string_of_int len) ^ " bytes recv'd");
+	begin match Bert.decode_binary buf with 
+	  | Bert.More(length) -> recv_ start (len+length+toread);
+	  | Bert.Ok(term, remain) ->   Bert.print_erlterm term;
+	  | Bert.None ->      print_endline "error?";
+	end;
+    in recv_ 0 2 in
+  let _ = recv_term csock in
+    
+    (*     prerr_endline buffer; *)
     close csock;
     prerr_endline "----------------";;
 
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.