Skip to content

Commit 2297a08

Browse files
committed
feat: pass local and remote address to onOpen callback
1 parent d3ee754 commit 2297a08

File tree

3 files changed

+28
-13
lines changed

3 files changed

+28
-13
lines changed

packages/SwingSet/src/vats/network/network.js

+10-6
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ export const ENDPOINT_SEPARATOR = '/';
7171

7272
/**
7373
* @typedef {Object} ConnectionHandler A handler for a given Connection
74-
* @property {(connection: Connection, c: ConnectionHandler) => void} [onOpen] The connection has been opened
74+
* @property {(connection: Connection, localAddr: Endpoint, remoteAddr: Endpoint, c: ConnectionHandler) => void} [onOpen] The connection has been opened
7575
* @property {(connection: Connection, packetBytes: Bytes, c: ConnectionHandler) => Promise<Data>} [onReceive] The connection received a packet
7676
* @property {(connection: Connection, reason?: CloseReason, c: ConnectionHandler) => Promise<void>} [onClose] The connection has been closed
7777
*
@@ -185,7 +185,7 @@ export const makeConnection = (
185185

186186
current.add(connection);
187187
E(handler)
188-
.onOpen(connection, handler)
188+
.onOpen(connection, localAddr, remoteAddr, handler)
189189
.catch(rethrowUnlessMissing);
190190
return connection;
191191
};
@@ -257,15 +257,19 @@ export function crossoverConnection(
257257
makeHalfConnection(0, 1);
258258
makeHalfConnection(1, 0);
259259

260-
function openHalfConnection(l) {
260+
/**
261+
* @param {number} l local side of the connection
262+
* @param {number} r remote side of the connection
263+
*/
264+
function openHalfConnection(l, r) {
261265
current.add(conns[l]);
262266
E(handlers[l])
263-
.onOpen(conns[l], handlers[l])
267+
.onOpen(conns[l], addrs[l], addrs[r], handlers[l])
264268
.catch(rethrowUnlessMissing);
265269
}
266270

267-
openHalfConnection(0);
268-
openHalfConnection(1);
271+
openHalfConnection(0, 1);
272+
openHalfConnection(1, 0);
269273

270274
const [conn0, conn1] = conns;
271275
return [conn0, conn1];

packages/SwingSet/test/test-network.js

+10-5
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ test('handled protocol', async t => {
8686
await port.connect(
8787
'/ibc/*/ordered/echo',
8888
harden({
89-
async onOpen(connection) {
89+
async onOpen(connection, _localAddr, _remoteAddr) {
9090
const ack = await connection.send('ping');
9191
// log(ack);
9292
t.equals(`${ack}`, 'ping', 'received pong');
@@ -138,7 +138,7 @@ test('protocol connection listen', async t => {
138138
);
139139
let handler;
140140
return harden({
141-
async onOpen(connection, connectionHandler) {
141+
async onOpen(connection, _localAddr, _remoteAddr, connectionHandler) {
142142
t.assert(
143143
connectionHandler,
144144
`connectionHandler is tracked in onOpen`,
@@ -198,9 +198,14 @@ test('protocol connection listen', async t => {
198198
'/net/ordered/ordered/some-portname',
199199
harden({
200200
...connectionHandler,
201-
async onOpen(connection, c) {
201+
async onOpen(connection, localAddr, remoteAddr, c) {
202202
if (connectionHandler.onOpen) {
203-
await connectionHandler.onOpen(connection, c);
203+
await connectionHandler.onOpen(
204+
connection,
205+
localAddr,
206+
remoteAddr,
207+
c,
208+
);
204209
}
205210
connection.send('ping');
206211
},
@@ -245,7 +250,7 @@ test('loopback protocol', async t => {
245250
await port2.connect(
246251
port.getLocalAddress(),
247252
harden({
248-
async onOpen(c, _connectionHandler) {
253+
async onOpen(c, _localAddr, _remoteAddr, _connectionHandler) {
249254
t.equals(`${await c.send('ping')}`, 'pingack', 'expected pingack');
250255
closed.resolve();
251256
},

packages/cosmic-swingset/lib/ag-solo/vats/ibc.js

+8-2
Original file line numberDiff line numberDiff line change
@@ -223,8 +223,14 @@ export function makeIBCProtocolHandler(
223223
}
224224

225225
return harden({
226-
async onOpen(conn, _handler) {
227-
console.info('onOpen Remote IBC Connection', channelID, portID);
226+
async onOpen(conn, localAddr, remoteAddr, _handler) {
227+
console.info(
228+
'onOpen Remote IBC Connection',
229+
channelID,
230+
portID,
231+
localAddr,
232+
remoteAddr,
233+
);
228234
const connP = /** @type {Promise<Connection, any>} */ (E.when(conn));
229235
channelKeyToConnP.init(channelKey, connP);
230236
},

0 commit comments

Comments
 (0)