Skip to content

Commit 16197e8

Browse files
committed
Added SdBus.address property
1 parent 1535f65 commit 16197e8

File tree

3 files changed

+24
-1
lines changed

3 files changed

+24
-1
lines changed

src/sdbus/sd_bus_internals.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,8 @@ def close(self) -> None:
208208
def start(self) -> None:
209209
raise NotImplementedError(__STUB_ERROR)
210210

211+
address: Optional[str] = None
212+
211213

212214
def sd_bus_open() -> SdBus:
213215
raise NotImplementedError(__STUB_ERROR)

src/sdbus/sd_bus_internals_bus.c

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -634,6 +634,23 @@ static PyMethodDef SdBus_methods[] = {
634634
{NULL, NULL, 0, NULL},
635635
};
636636

637+
static PyObject* SdBus_address_getter(SdBusObject* self, void* Py_UNUSED(closure)) {
638+
const char* bus_address = NULL;
639+
int get_address_result = sd_bus_get_address(self->sd_bus_ref, &bus_address);
640+
if (-ENODATA == get_address_result) {
641+
// Bus has not been set yet
642+
Py_RETURN_NONE;
643+
} else {
644+
CALL_SD_BUS_AND_CHECK(get_address_result);
645+
}
646+
return PyUnicode_FromString(bus_address);
647+
}
648+
649+
static PyGetSetDef SdBus_properies[] = {
650+
{"address", (getter)SdBus_address_getter, NULL, "Bus address", NULL},
651+
{0},
652+
};
653+
637654
PyType_Spec SdBusType = {
638655
.name = "sd_bus_internals.SdBus",
639656
.basicsize = sizeof(SdBusObject),
@@ -645,6 +662,7 @@ PyType_Spec SdBusType = {
645662
{Py_tp_init, (initproc)SdBus_init},
646663
{Py_tp_dealloc, (destructor)SdBus_dealloc},
647664
{Py_tp_methods, SdBus_methods},
665+
{Py_tp_getset, SdBus_properies},
648666
{0, NULL},
649667
},
650668
};

test/test_low_level_api.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,10 @@
3333

3434
class TestDbusTypes(IsolatedDbusTestCase):
3535
def test_init_bus(self) -> None:
36-
SdBus()
36+
not_connected_bus = SdBus()
37+
self.assertIsNone(not_connected_bus.address)
38+
39+
self.assertIsNotNone(self.bus.address)
3740

3841
def test_validation_funcs(self) -> None:
3942
try:

0 commit comments

Comments
 (0)