yr.cpp_instance_class

yr.cpp_instance_class#

class yr.cpp_instance_class(class_name: str, factory_name: str, function_urn: str)[source]#

Bases: object

Constructs a proxy for a C++ class to enable remote invocation.

init.

Parameters:
  • class_name (str) – cpp class name.

  • factory_name (str) – Name of the static factory function of the cpp class.

  • function_urn (str) – Function URN, Defaults to sn:cn:yrk:default:function:0-defaultservice-cpp:$latest.

Examples

#include <iostream>
#include "yr/yr.h"
class Counter {
public:
    int count;

    Counter() {}
    Counter(int init) { count = init; }

    static Counter* FactoryCreate(int init) {
        std::cout << "Counter FactoryCreate with init=" << init << std::endl;
        return new Counter(init);
    }

    int Add(int x) {
        count += x;
        std::cout << "Counter Add with init=" << count << std::endl;
        return count;
    }

    YR_STATE(count);
};

YR_INVOKE(Counter::FactoryCreate, &Counter::Add);
>>> import yr
>>> yr.init()
>>> cpp_function_urn = (
...     "sn:cn:yrk:default:"
...     "function:0-yr-defaultservice-cpp:$latest"
... )
>>> counter_class = yr.cpp_instance_class("Counter", "Counter::FactoryCreate", cpp_function_urn)
>>> opt = yr.InvokeOptions(cpu=1000, memory=1024)
>>> ins = counter_class.options(opt).invoke(11)
>>> result = ins.Add.invoke(9)
>>> yr.get(result)
>>> ins.terminate()
>>> yr.finalize()

Methods

__init__

init.

get_class_name

Get class name in this CPP instance

get_factory_name

Get factory function name in this CPP instance

get_function_key

Get function key in this CPP instance

invoke

Create an instance of a cpp class.

options

Set user invoke options