This is an automated email from the ASF dual-hosted git repository.

ianmcook pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/arrow-experiments.git


The following commit(s) were added to refs/heads/main by this push:
     new 7c03915  [MATLAB] Add simple HTTP `GET` MATLAB Client example (#45)
7c03915 is described below

commit 7c0391533788d971cce92275e6f99c221c955dcb
Author: Kevin Gurney <[email protected]>
AuthorDate: Wed Jan 22 16:44:05 2025 -0500

    [MATLAB] Add simple HTTP `GET` MATLAB Client example (#45)
    
    Adds a simple MATLAB HTTP GET client example
    
    ---------
    
    Lead-authored-by: Kevin Gurney <[email protected]>
    Co-authored-by: Sarah Gilmore <[email protected]>
    Signed-off-by: Ian Cook <[email protected]>
---
 http/get_simple/matlab/README.md | 34 ++++++++++++++++++++++++
 http/get_simple/matlab/client.m  | 56 ++++++++++++++++++++++++++++++++++++++++
 2 files changed, 90 insertions(+)

diff --git a/http/get_simple/matlab/README.md b/http/get_simple/matlab/README.md
new file mode 100644
index 0000000..d6f575a
--- /dev/null
+++ b/http/get_simple/matlab/README.md
@@ -0,0 +1,34 @@
+<!---
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+-->
+
+# HTTP GET Arrow Data: Simple MATLAB Client Example
+
+This directory contains a minimal example of an HTTP client implemented in 
MATLAB. The client:
+
+1. Sends an HTTP GET request to a server.
+2. Receives an HTTP 200 response from the server, with the response body 
containing an Arrow IPC stream of record batches.
+3. Creates an Arrow table from the record batches
+
+To run this example, first start one of the server examples in the parent 
directory, then:
+
+Run the MATLAB `client` script in "batch mode":
+
+```sh
+matlab -batch client
+```
diff --git a/http/get_simple/matlab/client.m b/http/get_simple/matlab/client.m
new file mode 100644
index 0000000..995413b
--- /dev/null
+++ b/http/get_simple/matlab/client.m
@@ -0,0 +1,56 @@
+% Licensed to the Apache Software Foundation (ASF) under one
+% or more contributor license agreements.  See the NOTICE file
+% distributed with this work for additional information
+% regarding copyright ownership.  The ASF licenses this file
+% to you under the Apache License, Version 2.0 (the
+% "License"); you may not use this file except in compliance
+% with the License.  You may obtain a copy of the License at
+%
+%   http://www.apache.org/licenses/LICENSE-2.0
+%
+% Unless required by applicable law or agreed to in writing,
+% software distributed under the License is distributed on an
+% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+% KIND, either express or implied.  See the License for the
+% specific language governing permissions and limitations
+% under the License.
+
+% The address of the HTTP server that
+% returns Arrow IPC Stream responses.
+server = "http://localhost:8008";;
+
+% Diagnostic output.
+disp("Reading Arrow IPC Stream from " + server + "...");
+
+% Start timing.
+tic;
+
+% Make an HTTP GET request to the local server
+% to fetch an Arrow IPC Stream and read all the
+% data into memory as a byte (uint8) array.
+options = weboptions(ContentType="binary");
+bytes = webread(server, options);
+
+% Construct an Arrow RecordBatchStreamReader from the in-memory bytes.
+reader = arrow.io.ipc.RecordBatchStreamReader.fromBytes(bytes);
+
+% Read an Arrow table from the in-memory bytes.
+arrowTable = reader.readTable();
+
+% Stop timing.
+time = toc;
+% Round elapsed time to two decimal places.
+time = round(time, 2);
+
+% Number of bytes received.
+nbytes = length(bytes);
+
+% Diagnostic output.
+disp("DONE ✔");
+disp("---------------");
+disp("Results")
+disp("---------------");
+disp("Time (s): " + sprintf("%.2f", time));
+disp("Num Bytes: " + string(nbytes));
+disp("Num Rows:" + string(arrowTable.NumRows));
+disp("Num Columns:" + string(arrowTable.NumColumns));

Reply via email to