উদাহরণসহ বিভিন্ন ভাষায় FlatBuffers প্রয়োগ

FlatBuffers এর Multi-language সাপোর্ট - ফ্লাট বাফারস (Flat Buffers) - Latest Technologies

233

FlatBuffers একটি কার্যকরী সিরিয়ালাইজেশন ফরম্যাট যা বিভিন্ন প্রোগ্রামিং ভাষায় সমর্থন করে। নিচে বিভিন্ন ভাষায় FlatBuffers এর ব্যবহার এবং উদাহরণ সহ বিবরণ দেওয়া হলো।

১. C++

স্কিমা ফাইল: monster.fbs

namespace Game;

table Monster {
    name: string;
    hp: int;
    mana: int;
}

root_type Monster;

C++ কোড উদাহরণ

#include "monster_generated.h"  // FlatBuffers জেনারেটেড ফাইল

#include <iostream>
#include <fstream>

int main() {
    flatbuffers::FlatBufferBuilder builder;

    auto name = builder.CreateString("Orc");
    Game::MonsterBuilder monster_builder(builder);
    monster_builder.add_name(name);
    monster_builder.add_hp(100);
    monster_builder.add_mana(50);
    auto monster = monster_builder.Finish();

    builder.Finish(monster);

    // Write to file
    std::ofstream output("monster.bin", std::ios::binary);
    output.write(reinterpret_cast<const char*>(builder.GetBufferPointer()), builder.GetSize());
    output.close();

    std::cout << "Monster data saved!" << std::endl;

    return 0;
}

২. Java

স্কিমা ফাইল: monster.fbs

(একই স্কিমা ফাইল ব্যবহার করুন)

Java কোড উদাহরণ

import com.google.flatbuffers.FlatBufferBuilder;

public class Main {
    public static void main(String[] args) {
        FlatBufferBuilder builder = new FlatBufferBuilder(1024);

        int nameOffset = builder.createString("Orc");
        Monster.startMonster(builder);
        Monster.addName(builder, nameOffset);
        Monster.addHp(builder, 100);
        Monster.addMana(builder, 50);
        int monster = Monster.endMonster(builder);

        builder.finish(monster);

        // Write to file
        try (FileOutputStream fos = new FileOutputStream("monster.bin")) {
            fos.write(builder.sizedByteArray());
        } catch (IOException e) {
            e.printStackTrace();
        }

        System.out.println("Monster data saved!");
    }
}

৩. Python

স্কিমা ফাইল: monster.fbs

(একই স্কিমা ফাইল ব্যবহার করুন)

Python কোড উদাহরণ

import monster_pb2

def main():
    monster = monster_pb2.Monster()
    monster.name = "Orc"
    monster.hp = 100
    monster.mana = 50

    # Serialize to binary
    with open("monster.bin", "wb") as f:
        f.write(monster.SerializeToString())

    print("Monster data saved!")

if __name__ == "__main__":
    main()

৪. C#

স্কিমা ফাইল: monster.fbs

(একই স্কিমা ফাইল ব্যবহার করুন)

C# কোড উদাহরণ

using FlatBuffers;
using System;
using System.IO;

class Program
{
    static void Main()
    {
        var builder = new FlatBufferBuilder(1024);

        var nameOffset = builder.CreateString("Orc");
        Game.Monster.StartMonster(builder);
        Game.Monster.AddName(builder, nameOffset);
        Game.Monster.AddHp(builder, 100);
        Game.Monster.AddMana(builder, 50);
        var monster = Game.Monster.EndMonster(builder);

        builder.Finish(monster.Value);

        // Write to file
        File.WriteAllBytes("monster.bin", builder.SizedByteArray());

        Console.WriteLine("Monster data saved!");
    }
}

৫. Go

স্কিমা ফাইল: monster.fbs

(একই স্কিমা ফাইল ব্যবহার করুন)

Go কোড উদাহরণ

package main

import (
    "flatbuffers"
    "io/ioutil"
    "monster"
    "log"
)

func main() {
    builder := flatbuffers.NewBuilder(0)

    name := builder.CreateString("Orc")
    monster.StartMonster(builder)
    monster.AddName(builder, name)
    monster.AddHp(builder, 100)
    monster.AddMana(builder, 50)
    m := monster.EndMonster(builder)

    builder.Finish(m)

    // Write to file
    if err := ioutil.WriteFile("monster.bin", builder.FinishedBytes(), 0644); err != nil {
        log.Fatalf("failed writing to file: %s", err)
    }

    log.Println("Monster data saved!")
}

৬. JavaScript

স্কিমা ফাইল: monster.fbs

(একই স্কিমা ফাইল ব্যবহার করুন)

JavaScript কোড উদাহরণ

const fs = require('fs');
const flatbuffers = require('flatbuffers').flatbuffers;
const Monster = require('./monster_generated').Game.Monster;

function main() {
    const builder = new flatbuffers.FlatBufferBuilder(1024);

    const nameOffset = builder.createString("Orc");
    Monster.startMonster(builder);
    Monster.addName(builder, nameOffset);
    Monster.addHp(builder, 100);
    Monster.addMana(builder, 50);
    const monster = Monster.endMonster(builder);

    builder.finish(monster);

    // Write to file
    fs.writeFileSync("monster.bin", builder.asUint8Array());

    console.log("Monster data saved!");
}

main();

উপসংহার

FlatBuffers বিভিন্ন প্রোগ্রামিং ভাষায় কার্যকরী ডেটা সিরিয়ালাইজেশন ও ডেসিরিয়ালাইজেশন সমর্থন করে। প্রতিটি ভাষায় কোড উদাহরণগুলি FlatBuffers এর সুবিধা এবং কার্যকারিতা তুলে ধরে, যা উন্নত পারফরম্যান্স এবং কম মেমরি ব্যবহারের জন্য উপযোগী। এটি গেমিং, মোবাইল অ্যাপ্লিকেশন, এবং রিয়েল-টাইম ডেটা প্রসেসিংয়ের মতো ক্ষেত্রে বিশেষভাবে কার্যকর।

Content added By
Promotion

Are you sure to start over?

Loading...