Skip to content

Commit 42310d2

Browse files
daywalker90rustyrussell
authored andcommitted
msggen: add override for connect notification in cln-rpc aswell
Changelog-None
1 parent 17584cd commit 42310d2

File tree

3 files changed

+51
-45
lines changed

3 files changed

+51
-45
lines changed

cln-rpc/src/notifications.rs

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -44,37 +44,37 @@ pub struct ChannelOpenedNotification {
4444
/// ['Direction of the connection']
4545
#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
4646
#[allow(non_camel_case_types)]
47-
pub enum ConnectDirection {
47+
pub enum PeerConnectDirection {
4848
#[serde(rename = "in")]
4949
IN = 0,
5050
#[serde(rename = "out")]
5151
OUT = 1,
5252
}
5353

54-
impl TryFrom<i32> for ConnectDirection {
54+
impl TryFrom<i32> for PeerConnectDirection {
5555
type Error = anyhow::Error;
56-
fn try_from(c: i32) -> Result<ConnectDirection, anyhow::Error> {
56+
fn try_from(c: i32) -> Result<PeerConnectDirection, anyhow::Error> {
5757
match c {
58-
0 => Ok(ConnectDirection::IN),
59-
1 => Ok(ConnectDirection::OUT),
60-
o => Err(anyhow::anyhow!("Unknown variant {} for enum ConnectDirection", o)),
58+
0 => Ok(PeerConnectDirection::IN),
59+
1 => Ok(PeerConnectDirection::OUT),
60+
o => Err(anyhow::anyhow!("Unknown variant {} for enum PeerConnectDirection", o)),
6161
}
6262
}
6363
}
6464

65-
impl ToString for ConnectDirection {
65+
impl ToString for PeerConnectDirection {
6666
fn to_string(&self) -> String {
6767
match self {
68-
ConnectDirection::IN => "IN",
69-
ConnectDirection::OUT => "OUT",
68+
PeerConnectDirection::IN => "IN",
69+
PeerConnectDirection::OUT => "OUT",
7070
}.to_string()
7171
}
7272
}
7373

7474
/// ['Type of connection (*torv2*/*torv3* only if **direction** is *out*)']
7575
#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
7676
#[allow(non_camel_case_types)]
77-
pub enum ConnectAddressType {
77+
pub enum PeerConnectAddressType {
7878
#[serde(rename = "local socket")]
7979
LOCAL_SOCKET = 0,
8080
#[serde(rename = "ipv4")]
@@ -87,28 +87,28 @@ pub enum ConnectAddressType {
8787
TORV3 = 4,
8888
}
8989

90-
impl TryFrom<i32> for ConnectAddressType {
90+
impl TryFrom<i32> for PeerConnectAddressType {
9191
type Error = anyhow::Error;
92-
fn try_from(c: i32) -> Result<ConnectAddressType, anyhow::Error> {
92+
fn try_from(c: i32) -> Result<PeerConnectAddressType, anyhow::Error> {
9393
match c {
94-
0 => Ok(ConnectAddressType::LOCAL_SOCKET),
95-
1 => Ok(ConnectAddressType::IPV4),
96-
2 => Ok(ConnectAddressType::IPV6),
97-
3 => Ok(ConnectAddressType::TORV2),
98-
4 => Ok(ConnectAddressType::TORV3),
99-
o => Err(anyhow::anyhow!("Unknown variant {} for enum ConnectAddressType", o)),
94+
0 => Ok(PeerConnectAddressType::LOCAL_SOCKET),
95+
1 => Ok(PeerConnectAddressType::IPV4),
96+
2 => Ok(PeerConnectAddressType::IPV6),
97+
3 => Ok(PeerConnectAddressType::TORV2),
98+
4 => Ok(PeerConnectAddressType::TORV3),
99+
o => Err(anyhow::anyhow!("Unknown variant {} for enum PeerConnectAddressType", o)),
100100
}
101101
}
102102
}
103103

104-
impl ToString for ConnectAddressType {
104+
impl ToString for PeerConnectAddressType {
105105
fn to_string(&self) -> String {
106106
match self {
107-
ConnectAddressType::LOCAL_SOCKET => "LOCAL_SOCKET",
108-
ConnectAddressType::IPV4 => "IPV4",
109-
ConnectAddressType::IPV6 => "IPV6",
110-
ConnectAddressType::TORV2 => "TORV2",
111-
ConnectAddressType::TORV3 => "TORV3",
107+
PeerConnectAddressType::LOCAL_SOCKET => "LOCAL_SOCKET",
108+
PeerConnectAddressType::IPV4 => "IPV4",
109+
PeerConnectAddressType::IPV6 => "IPV6",
110+
PeerConnectAddressType::TORV2 => "TORV2",
111+
PeerConnectAddressType::TORV3 => "TORV3",
112112
}.to_string()
113113
}
114114
}

contrib/msggen/msggen/gen/rpc/notification.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
from msggen.model import Service
66
from msggen.gen.generator import IGenerator
77
from msggen.gen.rpc.rust import gen_composite
8+
from msggen.gen.grpc.util import notification_typename_overrides
89

910

1011
class NotificationGenerator(IGenerator):
@@ -43,7 +44,7 @@ def generate(self, service: Service) -> None:
4344
self.write("\n\n")
4445

4546
for notification in service.notifications:
46-
_, resp_decl = gen_composite(notification.response, self.meta)
47+
_, resp_decl = gen_composite(notification.response, self.meta, notification_typename_overrides)
4748
self.write(resp_decl)
4849

4950
self.write("pub mod requests{\n")

contrib/msggen/msggen/gen/rpc/rust.py

Lines changed: 25 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -71,22 +71,22 @@ def normalize_varname(field):
7171
return field
7272

7373

74-
def gen_field(field, meta):
74+
def gen_field(field, meta, override=None):
7575
if field.omit():
7676
return ("", "")
7777
if isinstance(field, CompositeField):
78-
return gen_composite(field, meta)
78+
return gen_composite(field, meta, override)
7979
elif isinstance(field, EnumField):
80-
return gen_enum(field, meta)
80+
return gen_enum(field, meta, override)
8181
elif isinstance(field, ArrayField):
82-
return gen_array(field, meta)
82+
return gen_array(field, meta, override)
8383
elif isinstance(field, PrimitiveField):
8484
return gen_primitive(field)
8585
else:
8686
raise TypeError(f"Unmanaged type {field}")
8787

8888

89-
def gen_enum(e, meta):
89+
def gen_enum(e, meta, override):
9090
defi, decl = "", ""
9191

9292
if e.omit():
@@ -95,14 +95,21 @@ def gen_enum(e, meta):
9595
if e.description != "":
9696
decl += f"/// {e.description}\n"
9797

98+
if override is None:
99+
message_name = e.typename.name
100+
override = lambda x: x
101+
typename = override(str(e.typename))
102+
else:
103+
typename = override(str(e.typename))
104+
message_name = typename
105+
98106
if e.deprecated:
99107
decl += "#[deprecated]\n"
100-
decl += f"#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]\n#[allow(non_camel_case_types)]\npub enum {e.typename} {{\n"
108+
decl += f"#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]\n#[allow(non_camel_case_types)]\npub enum {typename} {{\n"
101109

102110
m = meta["grpc-field-map"]
103111
m2 = meta["grpc-enum-map"]
104112

105-
message_name = e.typename.name
106113
assert not (message_name in m and message_name in m2)
107114
if message_name in m:
108115
m = m[message_name]
@@ -130,9 +137,9 @@ def gen_enum(e, meta):
130137
# representation
131138
decl += dedent(
132139
f"""\
133-
impl TryFrom<i32> for {e.typename} {{
140+
impl TryFrom<i32> for {typename} {{
134141
type Error = anyhow::Error;
135-
fn try_from(c: i32) -> Result<{e.typename}, anyhow::Error> {{
142+
fn try_from(c: i32) -> Result<{typename}, anyhow::Error> {{
136143
match c {{
137144
"""
138145
)
@@ -141,16 +148,16 @@ def gen_enum(e, meta):
141148
for v in sorted_variants:
142149
norm = v.normalized()
143150
# decl += f" #[serde(rename = \"{v}\")]\n"
144-
decl += f" {m[str(v)]} => Ok({e.typename}::{norm}),\n"
151+
decl += f" {m[str(v)]} => Ok({typename}::{norm}),\n"
145152
else:
146153
for i, v in enumerate(e.variants):
147154
norm = v.normalized()
148155
# decl += f" #[serde(rename = \"{v}\")]\n"
149-
decl += f" {i} => Ok({e.typename}::{norm}),\n"
156+
decl += f" {i} => Ok({typename}::{norm}),\n"
150157

151158
decl += dedent(
152159
f"""\
153-
o => Err(anyhow::anyhow!("Unknown variant {{}} for enum {e.typename}", o)),
160+
o => Err(anyhow::anyhow!("Unknown variant {{}} for enum {typename}", o)),
154161
}}
155162
}}
156163
}}
@@ -162,14 +169,14 @@ def gen_enum(e, meta):
162169
# appear in the schemas.
163170
decl += dedent(
164171
f"""\
165-
impl ToString for {e.typename} {{
172+
impl ToString for {typename} {{
166173
fn to_string(&self) -> String {{
167174
match self {{
168175
"""
169176
)
170177
for v in e.variants:
171178
norm = v.normalized()
172-
decl += f' {e.typename}::{norm} => "{norm}",\n'
179+
decl += f' {typename}::{norm} => "{norm}",\n'
173180
decl += dedent(
174181
f"""\
175182
}}.to_string()
@@ -179,8 +186,6 @@ def gen_enum(e, meta):
179186
"""
180187
)
181188

182-
typename = e.typename
183-
184189
if e.override() is not None:
185190
decl = "" # No declaration if we have an override
186191
typename = e.override()
@@ -220,10 +225,10 @@ def rename_if_necessary(original, name):
220225
return f""
221226

222227

223-
def gen_array(a, meta):
228+
def gen_array(a, meta, override=None):
224229
name = a.name.normalized().replace("[]", "")
225230
logger.debug(f"Generating array field {a.name} -> {name} ({a.path})")
226-
_, decl = gen_field(a.itemtype, meta)
231+
_, decl = gen_field(a.itemtype, meta, override)
227232

228233
if a.override():
229234
decl = "" # No declaration if we have an override
@@ -254,11 +259,11 @@ def gen_array(a, meta):
254259
return (defi, decl)
255260

256261

257-
def gen_composite(c, meta) -> Tuple[str, str]:
262+
def gen_composite(c, meta, override=None) -> Tuple[str, str]:
258263
logger.debug(f"Generating composite field {c.name} ({c.path})")
259264
fields = []
260265
for f in c.fields:
261-
fields.append(gen_field(f, meta))
266+
fields.append(gen_field(f, meta, override))
262267
fields = sorted(fields)
263268

264269
r = "".join([f[1] for f in fields])

0 commit comments

Comments
 (0)