Search in sources :

Example 1 with DelimitedRecordWriteEvent

use of org.ballerinalang.nativeimpl.io.events.records.DelimitedRecordWriteEvent in project ballerina by ballerina-lang.

the class IOUtils method write.

/**
 * Asynchronously writes delimited records to the channel.
 *
 * @param recordChannel channel the records should be written.
 * @param records       the record content.
 * @param context       event context.
 * @param function      callback function which will be triggered.
 */
public static void write(DelimitedRecordChannel recordChannel, BStringArray records, EventContext context, Function<EventResult, EventResult> function) {
    DelimitedRecordWriteEvent recordWriteEvent = new DelimitedRecordWriteEvent(recordChannel, records, context);
    CompletableFuture<EventResult> future = EventManager.getInstance().publish(recordWriteEvent);
    future.thenApply(function);
}
Also used : EventResult(org.ballerinalang.nativeimpl.io.events.EventResult) DelimitedRecordWriteEvent(org.ballerinalang.nativeimpl.io.events.records.DelimitedRecordWriteEvent)

Example 2 with DelimitedRecordWriteEvent

use of org.ballerinalang.nativeimpl.io.events.records.DelimitedRecordWriteEvent in project ballerina by ballerina-lang.

the class AsyncReadWriteTest method writeRecords.

@Test(description = "Test which will write records to a channel using async io framework")
public void writeRecords() throws IOException, ExecutionException, InterruptedException {
    // Number of characters in this file would be 6
    ByteChannel byteChannel = TestUtil.openForWriting(currentDirectoryPath + "records.csv");
    Channel channel = new MockByteChannel(byteChannel);
    CharacterChannel characterChannel = new CharacterChannel(channel, StandardCharsets.UTF_8.name());
    DelimitedRecordChannel recordChannel = new DelimitedRecordChannel(characterChannel, "\n", ",");
    String[] recordOne = { "Foo", "Bar", "911" };
    BStringArray recordOneArr = new BStringArray(recordOne);
    DelimitedRecordWriteEvent recordWriteEvent = new DelimitedRecordWriteEvent(recordChannel, recordOneArr);
    Future<EventResult> future = eventManager.publish(recordWriteEvent);
    future.get();
    String[] recordTwo = { "Jim", "Com", "119" };
    BStringArray recordTwoArr = new BStringArray(recordTwo);
    recordWriteEvent = new DelimitedRecordWriteEvent(recordChannel, recordTwoArr);
    future = eventManager.publish(recordWriteEvent);
    future.get();
    recordChannel.close();
}
Also used : MockByteChannel(org.ballerinalang.test.nativeimpl.functions.io.MockByteChannel) ByteChannel(java.nio.channels.ByteChannel) EventResult(org.ballerinalang.nativeimpl.io.events.EventResult) DelimitedRecordWriteEvent(org.ballerinalang.nativeimpl.io.events.records.DelimitedRecordWriteEvent) DelimitedRecordChannel(org.ballerinalang.nativeimpl.io.channels.base.DelimitedRecordChannel) Channel(org.ballerinalang.nativeimpl.io.channels.base.Channel) MockByteChannel(org.ballerinalang.test.nativeimpl.functions.io.MockByteChannel) ByteChannel(java.nio.channels.ByteChannel) CharacterChannel(org.ballerinalang.nativeimpl.io.channels.base.CharacterChannel) CharacterChannel(org.ballerinalang.nativeimpl.io.channels.base.CharacterChannel) DelimitedRecordChannel(org.ballerinalang.nativeimpl.io.channels.base.DelimitedRecordChannel) BStringArray(org.ballerinalang.model.values.BStringArray) MockByteChannel(org.ballerinalang.test.nativeimpl.functions.io.MockByteChannel) Test(org.testng.annotations.Test)

Aggregations

EventResult (org.ballerinalang.nativeimpl.io.events.EventResult)2 DelimitedRecordWriteEvent (org.ballerinalang.nativeimpl.io.events.records.DelimitedRecordWriteEvent)2 ByteChannel (java.nio.channels.ByteChannel)1 BStringArray (org.ballerinalang.model.values.BStringArray)1 Channel (org.ballerinalang.nativeimpl.io.channels.base.Channel)1 CharacterChannel (org.ballerinalang.nativeimpl.io.channels.base.CharacterChannel)1 DelimitedRecordChannel (org.ballerinalang.nativeimpl.io.channels.base.DelimitedRecordChannel)1 MockByteChannel (org.ballerinalang.test.nativeimpl.functions.io.MockByteChannel)1 Test (org.testng.annotations.Test)1