Compare commits

...

3 Commits

Author SHA1 Message Date
Derrick Hammer a8419313b5
*update dist 2023-04-15 22:38:07 -04:00
Derrick Hammer f11e3fed78
*implement handlePeer 2023-04-15 22:37:49 -04:00
Derrick Hammer 95d866c69e
*Remove _socketOptions overrides 2023-04-15 22:35:22 -04:00
3 changed files with 23 additions and 10 deletions

View File

@ -1,8 +1,9 @@
/// <reference types="node" /> /// <reference types="node" />
import Proxy, { ProxyOptions } from "../proxy.js"; import Proxy, { ProxyOptions } from "../proxy.js";
import type { TcpSocketConnectOpts } from "net"; import type { TcpSocketConnectOpts } from "net";
import Peer, { DataSocketOptions, PeerOptions } from "../peer.js"; import { DataSocketOptions, PeerOptions } from "../peer.js";
import { PeerEntity } from "./multiSocket/types.js"; import { PeerEntity } from "./multiSocket/types.js";
import Peer from "./multiSocket/peer.js";
export interface MultiSocketProxyOptions extends ProxyOptions { export interface MultiSocketProxyOptions extends ProxyOptions {
socketClass?: any; socketClass?: any;
server: boolean; server: boolean;

View File

@ -10,6 +10,7 @@ const serialize_error_1 = require("serialize-error");
const b4a_1 = __importDefault(require("b4a")); const b4a_1 = __importDefault(require("b4a"));
const util_js_1 = require("../util.js"); const util_js_1 = require("../util.js");
const dummySocket_js_1 = __importDefault(require("./multiSocket/dummySocket.js")); const dummySocket_js_1 = __importDefault(require("./multiSocket/dummySocket.js"));
const peer_js_1 = __importDefault(require("./multiSocket/peer.js"));
const socketEncoding = { const socketEncoding = {
preencode(state, m) { preencode(state, m) {
compact_encoding_1.uint.preencode(state, m.id); compact_encoding_1.uint.preencode(state, m.id);
@ -54,7 +55,15 @@ const errorSocketEncoding = {
}; };
const nextSocketId = (0, util_js_1.idFactory)(1); const nextSocketId = (0, util_js_1.idFactory)(1);
class MultiSocketProxy extends proxy_js_1.default { class MultiSocketProxy extends proxy_js_1.default {
handlePeer({ peer, muxer, ...options }) { } handlePeer({ peer, muxer, ...options }) {
new peer_js_1.default({
...this.socketOptions,
proxy: this,
peer,
muxer,
...options,
});
}
socketClass; socketClass;
_peers = new Map(); _peers = new Map();
_nextPeer = (0, util_js_1.roundRobinFactory)(this._peers); _nextPeer = (0, util_js_1.roundRobinFactory)(this._peers);
@ -62,9 +71,6 @@ class MultiSocketProxy extends proxy_js_1.default {
_allowedPorts = []; _allowedPorts = [];
constructor(options) { constructor(options) {
super(options); super(options);
this._socketOptions.onchannel = this.handleNewPeerChannel.bind(this);
this._socketOptions.onclose = this.handleClosePeer.bind(this);
this._socketOptions.onopen = this.handlePeer.bind(this);
if (options.socketClass) { if (options.socketClass) {
this.socketClass = options.socketClass; this.socketClass = options.socketClass;
} }

View File

@ -4,7 +4,7 @@ import { json, raw, uint } from "compact-encoding";
import { deserializeError } from "serialize-error"; import { deserializeError } from "serialize-error";
import b4a from "b4a"; import b4a from "b4a";
import type { TcpSocketConnectOpts } from "net"; import type { TcpSocketConnectOpts } from "net";
import Peer, { DataSocketOptions, PeerOptions } from "../peer.js"; import { DataSocketOptions, PeerOptions } from "../peer.js";
import { roundRobinFactory, idFactory } from "../util.js"; import { roundRobinFactory, idFactory } from "../util.js";
import { import {
CloseSocketRequest, CloseSocketRequest,
@ -14,6 +14,7 @@ import {
WriteSocketRequest, WriteSocketRequest,
} from "./multiSocket/types.js"; } from "./multiSocket/types.js";
import DummySocket from "./multiSocket/dummySocket.js"; import DummySocket from "./multiSocket/dummySocket.js";
import Peer from "./multiSocket/peer.js";
export interface MultiSocketProxyOptions extends ProxyOptions { export interface MultiSocketProxyOptions extends ProxyOptions {
socketClass?: any; socketClass?: any;
@ -69,7 +70,15 @@ const errorSocketEncoding = {
const nextSocketId = idFactory(1); const nextSocketId = idFactory(1);
export default class MultiSocketProxy extends Proxy { export default class MultiSocketProxy extends Proxy {
handlePeer({ peer, muxer, ...options }: DataSocketOptions & PeerOptions) {} handlePeer({ peer, muxer, ...options }: DataSocketOptions & PeerOptions) {
new Peer({
...this.socketOptions,
proxy: this,
peer,
muxer,
...options,
});
}
private socketClass: any; private socketClass: any;
private _peers: Map<string, PeerEntity> = new Map<string, PeerEntity>(); private _peers: Map<string, PeerEntity> = new Map<string, PeerEntity>();
private _nextPeer = roundRobinFactory(this._peers); private _nextPeer = roundRobinFactory(this._peers);
@ -78,9 +87,6 @@ export default class MultiSocketProxy extends Proxy {
constructor(options: MultiSocketProxyOptions) { constructor(options: MultiSocketProxyOptions) {
super(options); super(options);
this._socketOptions.onchannel = this.handleNewPeerChannel.bind(this);
this._socketOptions.onclose = this.handleClosePeer.bind(this);
this._socketOptions.onopen = this.handlePeer.bind(this);
if (options.socketClass) { if (options.socketClass) {
this.socketClass = options.socketClass; this.socketClass = options.socketClass;
} else { } else {