From user-return-1251-archive-asf-public=cust-asf.ponee.io@arrow.apache.org Tue Jun 1 10:50:52 2021 Return-Path: X-Original-To: archive-asf-public@cust-asf.ponee.io Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mxout1-ec2-va.apache.org (mxout1-ec2-va.apache.org [3.227.148.255]) by mx-eu-01.ponee.io (Postfix) with ESMTPS id E176B180636 for ; Tue, 1 Jun 2021 12:50:51 +0200 (CEST) Received: from mail.apache.org (mailroute1-lw-us.apache.org [207.244.88.153]) by mxout1-ec2-va.apache.org (ASF Mail Server at mxout1-ec2-va.apache.org) with SMTP id 235363FDA9 for ; Tue, 1 Jun 2021 10:50:51 +0000 (UTC) Received: (qmail 49855 invoked by uid 500); 1 Jun 2021 10:50:50 -0000 Mailing-List: contact user-help@arrow.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: user@arrow.apache.org Delivered-To: mailing list user@arrow.apache.org Received: (qmail 49793 invoked by uid 99); 1 Jun 2021 10:50:50 -0000 Received: from spamproc1-he-fi.apache.org (HELO spamproc1-he-fi.apache.org) (95.217.134.168) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 01 Jun 2021 10:50:50 +0000 Received: from localhost (localhost [127.0.0.1]) by spamproc1-he-fi.apache.org (ASF Mail Server at spamproc1-he-fi.apache.org) with ESMTP id B04A3C0450 for ; Tue, 1 Jun 2021 10:50:49 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamproc1-he-fi.apache.org X-Spam-Flag: NO X-Spam-Score: 0.502 X-Spam-Level: X-Spam-Status: No, score=0.502 tagged_above=-999 required=6.31 tests=[DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HTML_MESSAGE=0.2, MIME_HTML_ONLY=0.3, RCVD_IN_DNSWL_BLOCKED=0.001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_PASS=-0.001] autolearn=disabled Authentication-Results: spamproc1-he-fi.apache.org (amavisd-new); dkim=pass (1024-bit key) header.d=gmx.net Received: from mx1-ec2-va.apache.org ([116.203.227.195]) by localhost (spamproc1-he-fi.apache.org [95.217.134.168]) (amavisd-new, port 10024) with ESMTP id InAtwl18dIll for ; Tue, 1 Jun 2021 10:50:48 +0000 (UTC) Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=212.227.17.22; helo=mout.gmx.net; envelope-from=bjoernbachmann@gmx.de; receiver= Received: from mout.gmx.net (mout.gmx.net [212.227.17.22]) by mx1-ec2-va.apache.org (ASF Mail Server at mx1-ec2-va.apache.org) with ESMTPS id 393FABD22C for ; Tue, 1 Jun 2021 10:50:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1622544641; bh=g3SiT18kimUE+9KwHR0xpLL5EI3WOnDypxyQBrF/804=; h=X-UI-Sender-Class:From:To:Subject:Date; b=ZT2sCO37jkrKDXZ2SN7OkcrJvrcl+rkl7USTLmNIqrbsItEuXxLi6HTg2rGlsMN8y 7JuIDQFQ7QjK1Fy0xxG7J2xkyoubKqbFDVi/CHiJ4Xz0qD76wk8KvwsHqzO60KR805 rewQ7zq+kzYyEInPIpKFVEuH4S8BK8kkqyPOfgqA= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from [80.187.118.121] ([80.187.118.121]) by web-mail.gmx.net (3c-app-gmx-bap42.server.lan [172.19.172.112]) (via HTTP); Tue, 1 Jun 2021 12:50:41 +0200 MIME-Version: 1.0 Message-ID: From: Bjoern Bachmann To: user@arrow.apache.org Subject: [C# C++] passing RecordBatch or Table from C++ build DLL to C# Content-Type: text/html; charset=UTF-8 Date: Tue, 1 Jun 2021 12:50:41 +0200 Importance: normal Sensitivity: Normal X-Priority: 3 X-Provags-ID: V03:K1:faR9m5PQugMbcH64QJB9DcPSJItIxak1y58ZKm3VoRn8/PKRjSctSL7SgLPLcwwdenVXe qR5yqi6M0VB2Cjt4iiMAwjTh5RMturEwb0l/VtDXMzY1zf/o7GWft0IyZf5sJDU8kfDuXQNeyoDb Om20FKhw9hoR/unlbQo2Gsqsiy4m9BV8a7YnDANuInz4S47NAuJcHYPdzXoAEFQGk6IpeM3SmhHE 45i65z6mJXk6u1tMt8o/dG9cYdrxhhx+EiFnKg/h82aEu6i7zvfOrV0q2ard/REMwIy44L800WS3 D8= X-UI-Out-Filterresults: notjunk:1;V03:K0:0gslUU1JdZE=:dNtYq4HqY5ebpC34ol6eAR Oxm54Lhipl35rQN9LM6OQ1pbhRXhpgIKVuqX3SJS6R7FyDxzJzZSNpr0ZYwUTyq42d6pVDScP 0T8x8sMkfOXIF0Su545rh/RcFaRO2NY71UeW+CDuNyZBhJ5IKvVAtSvsDiaz+NMLw5rDQgIml W+Lbx6IIiHV6UvkWErharaJd+8kb1MVsriDGYgjeKS50GFcHmSHWZ4OdYoMZf9+/+hyo53lEf rJ4MrK3nqJApNtJ8Lzvn4aq1R6ryNBFk0l6DDpRbt2AgCLiG5dA8fkqX3eLbHM9qHJtcPNkN0 K7a1EV1XkHmnTVtbnqhE6xTKaKC21EaoitNPPiFEoXGUYC3H8/aaSEEccFnZR/4zSQyrj7iYS ogEbuoYfr9dy9WT4fno+SkPwfWLycPkGs7g4vx8wMmn4lIP/ODEyBWUYQzhlgkw8rYLt8bz+5 hPKHdiFLmrzj2UhZSctP0vzZXV66t6Ca0VtX5ijn6l4B+4y7p2+Qnzs30ktBWmDyalUx7zonn xTu+SfecinxVK6wERN7iEx+h24FEKXY+hQE/+QJpIBOdhJpgAw7ztkvw5nq38/yCRUOLMYp0y /3hJz9NkyZ7Cqa33G8ZSSj6+hu/dcNkPRItys6fsX80XqhpzEk9H2yIJGQEwPOncuDHREagRq Xg9LHsrkckd9q71OFpt4rNu4bvssIXUrPSqfknLhK9DHOctYcJi0C7iVbv2/hjZLBJAIX6nxn jBynfQvP9cVgG5EFdbcQP/Sb1qsrgq8cTNxExOwzfIBWEcI7KGUR5fh8JlolY9/tQanDFyRR3 JFZcIpNeX5zai2rZlg2vvutNBU+oTWKnC3jhekvJeXRX9XgOY0=
Hello Arrow users,

I would need some help to understand how I can pass an RecordBatch or a table created in a C++ build DLL into a C# application? How could this be handled efficiently without much data copies?
 
Kind Regards,
Bjoern Bachmann.
 
C++ sample code which is exported in the DLL:
 
std::queue<std::shared_ptr<arrow::RecordBatch>> wfmQueue;
 
ARROW_EXAM_API long EnqueueWaveformChunks()
    {
        //En-Queue Loop
        std::cout << "En-Queue Data ... \n";
        for (int i = 0; i < chunk_size; i++) {
            createWfmSrc(col0_data, col1_data);
            WaveformChunkWriterHelper testWfm{ col0_data, col1_data };  //creates schema and adds the data
            testWfm.createRecBatch();
            wfmQueue.push(testWfm.getRecBatch());
        }
        return S_OK;
    }
 
    ARROW_EXAM_API long DequeueSingleWaveformChunk(arrow::RecordBatch* recBatch)
    {
        std::shared_ptr<arrow::RecordBatch> queueItem;
        if (!wfmQueue.empty()) {
            queueItem = wfmQueue.front();
            wfmQueue.pop();
            std::cout << "Get RecBatch from Queue\n";
      
            recBatch = queueItem.get();
            //ExportRecordBatch(*queueItem, c_array);
            //recBatch = reinterpret_cast<void*>(queueItem.get());
        }
        return S_OK;
    }