Skip to content

Commit 55c84e4

Browse files
committed
added device type filter on recruitment broadcast
1 parent 9861243 commit 55c84e4

6 files changed

Lines changed: 45 additions & 26 deletions

File tree

src/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import ClientSpecificP2PConnectionBuilders from './interconnected_node/p2p/build
55
import P2PConnection from './interconnected_node/p2p/connections/P2PConnection';
66
import MasterP2PConnection from './interconnected_node/p2p/connections/MasterP2PConnection';
77
import SlaveP2PConnection from './interconnected_node/p2p/connections/SlaveP2PConnection';
8+
import DeviceType from './interconnected_node/broker_service_socket/DeviceType';
89

910
export default InterconnectedNode;
1011

@@ -15,4 +16,5 @@ export {
1516
P2PConnection,
1617
MasterP2PConnection,
1718
SlaveP2PConnection,
19+
DeviceType,
1820
};

src/interconnected_node/InterconnectedNode.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,19 @@
11
import BrokerServiceSocket from './broker_service_socket/BrokerServiceSocket';
2+
import DeviceType from './broker_service_socket/DeviceType';
23
import ClientSpecificP2PConnectionBuilders from './p2p/builders/ClientSpecificP2PConnectionBuilders';
34

45
export default class InterconnectedNode {
56
private brokerServiceSocket: BrokerServiceSocket;
67

78
constructor(
89
private interconnectedNodeId: string,
9-
private builders: ClientSpecificP2PConnectionBuilders
10+
private builders: ClientSpecificP2PConnectionBuilders,
11+
private deviceType: DeviceType
1012
) {
1113
this.brokerServiceSocket = new BrokerServiceSocket(
1214
this.interconnectedNodeId,
13-
this.builders
15+
this.builders,
16+
this.deviceType
1417
);
1518
}
1619

src/interconnected_node/broker_service_socket/BrokerServiceSocket.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import ClientSpecificP2PConnectionBuilders from '../p2p/builders/ClientSpecificP
44
import MasterP2PConnectionsHub from '../p2p/hubs/MasterP2PConnectionsHub';
55
import SlaveP2PConnectionsHub from '../p2p/hubs/SlaveP2PConnectionsHub';
66
import applyBrokerServiceSocketHandlers from './applyBrokerServiceSocketHandlers';
7+
import DeviceType from './DeviceType';
78

89
export default class BrokerServiceSocket {
910
private socket: Socket | undefined;
@@ -13,7 +14,8 @@ export default class BrokerServiceSocket {
1314

1415
constructor(
1516
private interconnectedNodeId: string,
16-
private builders: ClientSpecificP2PConnectionBuilders
17+
private builders: ClientSpecificP2PConnectionBuilders,
18+
private deviceType: DeviceType
1719
) {
1820
this.socket = undefined;
1921
this.slaveP2PConnectionsHub = new SlaveP2PConnectionsHub();
@@ -38,7 +40,8 @@ export default class BrokerServiceSocket {
3840
this.slaveP2PConnectionsHub,
3941
this.masterP2PConnectionsHub,
4042
this.jobsRepository,
41-
this.builders
43+
this.builders,
44+
this.deviceType
4245
);
4346
this.socket.connect();
4447
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
enum DeviceType {
2+
DESKTOP = 'DESKTOP',
3+
MOBILE = 'MOBILE',
4+
}
5+
6+
export default DeviceType;

src/interconnected_node/broker_service_socket/applyBrokerServiceSocketHandlers.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import JobsRepository from '../contribution/common/JobsRepository';
44
import ClientSpecificP2PConnectionBuilders from '../p2p/builders/ClientSpecificP2PConnectionBuilders';
55
import MasterP2PConnectionsHub from '../p2p/hubs/MasterP2PConnectionsHub';
66
import SlaveP2PConnectionsHub from '../p2p/hubs/SlaveP2PConnectionsHub';
7+
import DeviceType from './DeviceType';
78
import applyOnAnswerConnectionHandler from './handlers/applyOnAnswerConnectionHandler';
89
import applyOnIceCandidateHandler from './handlers/applyOnIceCandidateHandler';
910
import applyOnRecruitmentAcceptHandler from './handlers/applyOnRecruitmentAcceptHandler';
@@ -16,7 +17,8 @@ export default function applyBrokerServiceSocketHandlers(
1617
slaveP2PConnectionsHub: SlaveP2PConnectionsHub,
1718
masterP2PConnectionsHub: MasterP2PConnectionsHub,
1819
jobsRepository: JobsRepository,
19-
builders: ClientSpecificP2PConnectionBuilders
20+
builders: ClientSpecificP2PConnectionBuilders,
21+
deviceType: DeviceType
2022
) {
2123
brokerServiceSocket.on('connect', () => {
2224
console.log('Node connected to Broker!');
@@ -30,7 +32,8 @@ export default function applyBrokerServiceSocketHandlers(
3032
brokerServiceSocket,
3133
interconnectedNodeId,
3234
slaveP2PConnectionsHub,
33-
jobsRepository
35+
jobsRepository,
36+
deviceType
3437
);
3538

3639
applyOnRecruitmentAcceptHandler(

src/interconnected_node/broker_service_socket/handlers/applyOnRecruitmentBroadcastHandler.ts

Lines changed: 22 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2,37 +2,39 @@ import { Socket } from 'socket.io-client';
22
import JobsRepository from '../../contribution/common/JobsRepository';
33
import SlaveP2PConnectionsHub from '../../p2p/hubs/SlaveP2PConnectionsHub';
44
import BrokerServiceChannels from '../BrokerServiceChannels';
5+
import DeviceType from '../DeviceType';
56

67
export default function applyOnRecruitmentBroadcastHandler(
78
brokerServiceSocket: Socket,
89
interconnectedNodeId: string,
910
slaveP2PConnectionsHub: SlaveP2PConnectionsHub,
10-
jobsRepository: JobsRepository
11+
jobsRepository: JobsRepository,
12+
deviceType: DeviceType
1113
): void {
1214
brokerServiceSocket.on(
1315
BrokerServiceChannels.RECRUITMENT_BROADCAST,
1416
(payload: any) => {
15-
// TODO check requirements
1617
if (
17-
payload.masterId !== interconnectedNodeId &&
18-
slaveP2PConnectionsHub.getByMasterId(payload.masterId) === undefined &&
19-
jobsRepository.get(payload.operationId) === undefined
18+
payload.deviceTypes === undefined ||
19+
payload.deviceTypes.includes(deviceType)
2020
) {
21-
const recruitmentAcceptPayload = {
22-
masterId: payload.masterId,
23-
masterRole: payload.masterRole,
24-
operationId: payload.operationId,
25-
slaveId: interconnectedNodeId,
26-
};
27-
brokerServiceSocket.emit(
28-
BrokerServiceChannels.RECRUITMENT_ACCEPT,
29-
recruitmentAcceptPayload
30-
);
31-
} else {
32-
brokerServiceSocket.emit(
33-
BrokerServiceChannels.RECRUITMENT_BROADCAST,
34-
'ERROR'
35-
);
21+
if (
22+
payload.masterId !== interconnectedNodeId &&
23+
slaveP2PConnectionsHub.getByMasterId(payload.masterId) ===
24+
undefined &&
25+
jobsRepository.get(payload.operationId) === undefined
26+
) {
27+
const recruitmentAcceptPayload = {
28+
masterId: payload.masterId,
29+
masterRole: payload.masterRole,
30+
operationId: payload.operationId,
31+
slaveId: interconnectedNodeId,
32+
};
33+
brokerServiceSocket.emit(
34+
BrokerServiceChannels.RECRUITMENT_ACCEPT,
35+
recruitmentAcceptPayload
36+
);
37+
}
3638
}
3739
}
3840
);

0 commit comments

Comments
 (0)