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

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

commit a18052f513718150d5e1a7d3197beb80b141cb09
Author: Kevin Gurney <[email protected]>
AuthorDate: Wed Jan 22 11:47:09 2025 -0500

    Add simple MATLAB HTTP GET client example.
---
 http/get_simple/matlab/README.md | 40 ++++++++++++++++++++++++++++
 http/get_simple/matlab/client.m  | 56 ++++++++++++++++++++++++++++++++++++++++
 2 files changed, 96 insertions(+)

diff --git a/http/get_simple/matlab/README.md b/http/get_simple/matlab/README.md
new file mode 100644
index 0000000..7735312
--- /dev/null
+++ b/http/get_simple/matlab/README.md
@@ -0,0 +1,40 @@
+<!---
+  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:
+
+1. Start MATLAB
+
+```shell
+$ matlab
+```
+
+2. Run the MATLAB script `client.m`:
+
+```matlab
+>> client
+```
diff --git a/http/get_simple/matlab/client.m b/http/get_simple/matlab/client.m
new file mode 100644
index 0000000..046ea0e
--- /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 local HTTP server
+% which 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): " + string(time));
+disp("Num Bytes: " + string(nbytes));
+disp("Num Rows:" + string(arrowTable.NumRows));
+disp("Num Columns:" + string(arrowTable.NumColumns));
\ No newline at end of file

Reply via email to