Skip to content

Commit

Permalink
feat: pass local and remote address to onOpen callback
Browse files Browse the repository at this point in the history
  • Loading branch information
michaelfig committed May 26, 2020
1 parent d3ee754 commit 2297a08
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 13 deletions.
16 changes: 10 additions & 6 deletions packages/SwingSet/src/vats/network/network.js
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ export const ENDPOINT_SEPARATOR = '/';

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

current.add(connection);
E(handler)
.onOpen(connection, handler)
.onOpen(connection, localAddr, remoteAddr, handler)
.catch(rethrowUnlessMissing);
return connection;
};
Expand Down Expand Up @@ -257,15 +257,19 @@ export function crossoverConnection(
makeHalfConnection(0, 1);
makeHalfConnection(1, 0);

function openHalfConnection(l) {
/**
* @param {number} l local side of the connection
* @param {number} r remote side of the connection
*/
function openHalfConnection(l, r) {
current.add(conns[l]);
E(handlers[l])
.onOpen(conns[l], handlers[l])
.onOpen(conns[l], addrs[l], addrs[r], handlers[l])
.catch(rethrowUnlessMissing);
}

openHalfConnection(0);
openHalfConnection(1);
openHalfConnection(0, 1);
openHalfConnection(1, 0);

const [conn0, conn1] = conns;
return [conn0, conn1];
Expand Down
15 changes: 10 additions & 5 deletions packages/SwingSet/test/test-network.js
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ test('handled protocol', async t => {
await port.connect(
'/ibc/*/ordered/echo',
harden({
async onOpen(connection) {
async onOpen(connection, _localAddr, _remoteAddr) {
const ack = await connection.send('ping');
// log(ack);
t.equals(`${ack}`, 'ping', 'received pong');
Expand Down Expand Up @@ -138,7 +138,7 @@ test('protocol connection listen', async t => {
);
let handler;
return harden({
async onOpen(connection, connectionHandler) {
async onOpen(connection, _localAddr, _remoteAddr, connectionHandler) {
t.assert(
connectionHandler,
`connectionHandler is tracked in onOpen`,
Expand Down Expand Up @@ -198,9 +198,14 @@ test('protocol connection listen', async t => {
'/net/ordered/ordered/some-portname',
harden({
...connectionHandler,
async onOpen(connection, c) {
async onOpen(connection, localAddr, remoteAddr, c) {
if (connectionHandler.onOpen) {
await connectionHandler.onOpen(connection, c);
await connectionHandler.onOpen(
connection,
localAddr,
remoteAddr,
c,
);
}
connection.send('ping');
},
Expand Down Expand Up @@ -245,7 +250,7 @@ test('loopback protocol', async t => {
await port2.connect(
port.getLocalAddress(),
harden({
async onOpen(c, _connectionHandler) {
async onOpen(c, _localAddr, _remoteAddr, _connectionHandler) {
t.equals(`${await c.send('ping')}`, 'pingack', 'expected pingack');
closed.resolve();
},
Expand Down
10 changes: 8 additions & 2 deletions packages/cosmic-swingset/lib/ag-solo/vats/ibc.js
Original file line number Diff line number Diff line change
Expand Up @@ -223,8 +223,14 @@ export function makeIBCProtocolHandler(
}

return harden({
async onOpen(conn, _handler) {
console.info('onOpen Remote IBC Connection', channelID, portID);
async onOpen(conn, localAddr, remoteAddr, _handler) {
console.info(
'onOpen Remote IBC Connection',
channelID,
portID,
localAddr,
remoteAddr,
);
const connP = /** @type {Promise<Connection, any>} */ (E.when(conn));
channelKeyToConnP.init(channelKey, connP);
},
Expand Down

0 comments on commit 2297a08

Please sign in to comment.