Skip to content

Commit df755d0

Browse files
author
Martin Belanger
committed
python: remove "iter" elements
This is just a bit of clean up. After reworking iterators by using actual Python code instead of C++, we don't need to keep these "iter" elements: host_iter, subsystem_iter, ctrl_iter, ns_iter. Signed-off-by: Martin Belanger <[email protected]>
1 parent 890d7a5 commit df755d0

1 file changed

Lines changed: 1 addition & 156 deletions

File tree

libnvme/nvme.i

Lines changed: 1 addition & 156 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,6 @@
3030
#include "nvme/types.h"
3131
#include "nvme/nbft.h"
3232

33-
static int host_iter_err = 0;
34-
static int subsys_iter_err = 0;
35-
static int ctrl_iter_err = 0;
36-
static int ns_iter_err = 0;
3733
static int connect_err = 0;
3834
static int discover_err = 0;
3935

@@ -57,65 +53,6 @@
5753
PyObject *hostnqn_from_file();
5854
PyObject *hostid_from_file();
5955

60-
%inline %{
61-
struct host_iter {
62-
struct nvme_root *root;
63-
struct nvme_host *pos;
64-
};
65-
66-
struct subsystem_iter {
67-
struct nvme_host *host;
68-
struct nvme_subsystem *pos;
69-
};
70-
71-
struct ctrl_iter {
72-
struct nvme_subsystem *subsystem;
73-
struct nvme_ctrl *pos;
74-
};
75-
76-
struct ns_iter {
77-
struct nvme_subsystem *subsystem;
78-
struct nvme_ctrl *ctrl;
79-
struct nvme_ns *pos;
80-
};
81-
%}
82-
83-
%exception host_iter::__next__ {
84-
host_iter_err = 0;
85-
$action /* $action sets host_iter_err to non-zero value on failure */
86-
if (host_iter_err) {
87-
PyErr_SetString(PyExc_StopIteration, "End of list");
88-
return NULL;
89-
}
90-
}
91-
92-
%exception subsystem_iter::__next__ {
93-
subsys_iter_err = 0;
94-
$action /* $action sets subsys_iter_err to non-zero value on failure */
95-
if (subsys_iter_err) {
96-
PyErr_SetString(PyExc_StopIteration, "End of list");
97-
return NULL;
98-
}
99-
}
100-
101-
%exception ctrl_iter::__next__ {
102-
ctrl_iter_err = 0;
103-
$action /* $action sets ctrl_iter_err to non-zero value on failure */
104-
if (ctrl_iter_err) {
105-
PyErr_SetString(PyExc_StopIteration, "End of list");
106-
return NULL;
107-
}
108-
}
109-
110-
%exception ns_iter::__next__ {
111-
ns_iter_err = 0;
112-
$action /* $action sets ns_iter_err to non-zero value on failure */
113-
if (ns_iter_err) {
114-
PyErr_SetString(PyExc_StopIteration, "End of list");
115-
return NULL;
116-
}
117-
}
118-
11956
%exception nvme_ctrl::connect {
12057
connect_err = 0;
12158
errno = 0;
@@ -574,21 +511,6 @@ struct nvme_ns {
574511
}
575512
}
576513

577-
%extend host_iter {
578-
struct host_iter *__iter__() {
579-
return $self;
580-
}
581-
struct nvme_host *__next__() {
582-
struct nvme_host *this = $self->pos;
583-
584-
if (!this) {
585-
host_iter_err = 1;
586-
return NULL;
587-
}
588-
$self->pos = nvme_next_host($self->root, this);
589-
return this;
590-
}
591-
}
592514

593515
%define SET_SYMNAME_DOCSTRING
594516
"@brief Set or Clear Host's Symbolic Name
@@ -629,13 +551,6 @@ struct nvme_ns {
629551
PyObject* __str__() {
630552
return PyUnicode_FromFormat("nvme.host(%s,%s)", STR_OR_NONE($self->hostnqn), STR_OR_NONE($self->hostid));
631553
}
632-
struct host_iter __iter__() {
633-
struct host_iter ret = {
634-
.root = nvme_host_get_root($self),
635-
.pos = $self
636-
};
637-
return ret;
638-
}
639554
%pythoncode %{
640555
def subsystems(self):
641556
"""Iterator over all subsystem objects"""
@@ -655,41 +570,6 @@ struct nvme_ns {
655570
}
656571
%};
657572

658-
%extend subsystem_iter {
659-
struct subsystem_iter *__iter__() {
660-
return $self;
661-
}
662-
struct nvme_subsystem *__next__() {
663-
struct nvme_subsystem *this = $self->pos;
664-
665-
if (!this) {
666-
subsys_iter_err = 1;
667-
return NULL;
668-
}
669-
$self->pos = nvme_next_subsystem($self->host, this);
670-
return this;
671-
}
672-
}
673-
674-
%extend ns_iter {
675-
struct ns_iter *__iter__() {
676-
return $self;
677-
}
678-
struct nvme_ns *__next__() {
679-
struct nvme_ns *this = $self->pos;
680-
681-
if (!this) {
682-
ns_iter_err = 1;
683-
return NULL;
684-
}
685-
if ($self->ctrl)
686-
$self->pos = nvme_ctrl_next_ns($self->ctrl, this);
687-
else
688-
$self->pos = nvme_subsystem_next_ns($self->subsystem, this);
689-
return this;
690-
}
691-
}
692-
693573
%pythonappend nvme_subsystem::nvme_subsystem(struct nvme_host *host,
694574
const char *subsysnqn,
695575
const char *name) {
@@ -706,13 +586,6 @@ struct nvme_ns {
706586
PyObject *__str__() {
707587
return PyUnicode_FromFormat("nvme.subsystem(%s,%s)", STR_OR_NONE($self->name), STR_OR_NONE($self->subsysnqn));
708588
}
709-
struct subsystem_iter __iter__() {
710-
struct subsystem_iter ret = {
711-
.host = nvme_subsystem_get_host($self),
712-
.pos = $self
713-
};
714-
return ret;
715-
}
716589
%pythoncode %{
717590
def controllers(self):
718591
"""Iterator over all controller objects"""
@@ -756,22 +629,6 @@ struct nvme_ns {
756629
}
757630
%};
758631

759-
%extend ctrl_iter {
760-
struct ctrl_iter *__iter__() {
761-
return $self;
762-
}
763-
struct nvme_ctrl *__next__() {
764-
struct nvme_ctrl *this = $self->pos;
765-
766-
if (!this) {
767-
ctrl_iter_err = 1;
768-
return NULL;
769-
}
770-
$self->pos = nvme_subsystem_next_ctrl($self->subsystem, this);
771-
return this;
772-
}
773-
}
774-
775632
%pythonappend nvme_ctrl::connect(struct nvme_host *h,
776633
struct nvme_fabrics_config *cfg) {
777634
self.__host = h # Keep a reference to parent to ensure ctrl obj gets GCed before host}
@@ -922,13 +779,7 @@ struct nvme_ns {
922779
PyUnicode_FromFormat("nvme_ctrl(transport=%s,%s)", STR_OR_NONE($self->transport), STR_OR_NONE($self->address)) :
923780
PyUnicode_FromFormat("nvme_ctrl(transport=%s)", STR_OR_NONE($self->transport));
924781
}
925-
struct ctrl_iter __iter__() {
926-
struct ctrl_iter ret = {
927-
.subsystem = nvme_ctrl_get_subsystem($self),
928-
.pos = $self
929-
};
930-
return ret;
931-
}
782+
932783
%pythoncode %{
933784
def namespaces(self):
934785
"""Iterator over all namespace objects"""
@@ -1088,12 +939,6 @@ struct nvme_ns {
1088939
PyObject *__str__() {
1089940
return PyUnicode_FromFormat("nvme.ns(%u)", $self->nsid);
1090941
}
1091-
struct ns_iter __iter__() {
1092-
struct ns_iter ret = { .ctrl = nvme_ns_get_ctrl($self),
1093-
.subsystem = nvme_ns_get_subsystem($self),
1094-
.pos = $self };
1095-
return ret;
1096-
}
1097942
%immutable name;
1098943
const char *name;
1099944
}

0 commit comments

Comments
 (0)