// Copyright (c) Microsoft Corporation. // Licensed under the MIT license. #include #include #include #include namespace nb = nanobind; using namespace mscclpp; void register_sm_channel(nb::module_& m) { nb::class_ smChannel(m, "SmChannel"); smChannel .def("__init__", [](SmChannel* smChannel, std::shared_ptr semaphore, RegisteredMemory dst, uintptr_t src) { new (smChannel) SmChannel(semaphore, dst, (void*)src); }) .def("__init__", [](SmChannel* smChannel, std::shared_ptr semaphore, RegisteredMemory dst, uintptr_t src, uintptr_t get_packet_buffer) { new (smChannel) SmChannel(semaphore, dst, (void*)src, (void*)get_packet_buffer); }) .def("device_handle", &SmChannel::deviceHandle); nb::class_(m, "SmChannelDeviceHandle") .def(nb::init<>()) .def_rw("semaphore_", &SmChannel::DeviceHandle::semaphore_) .def_rw("src_", &SmChannel::DeviceHandle::src_) .def_rw("dst_", &SmChannel::DeviceHandle::dst_) .def_rw("getPacketBuffer_", &SmChannel::DeviceHandle::getPacketBuffer_) .def_prop_ro("raw", [](const SmChannel::DeviceHandle& self) -> nb::bytes { return nb::bytes(reinterpret_cast(&self), sizeof(self)); }); };