mirror of
https://github.com/hensm/fx_cast.git
synced 2026-06-09 09:09:58 +00:00
79 lines
2.1 KiB
TypeScript
Executable File
79 lines
2.1 KiB
TypeScript
Executable File
"use strict";
|
|
|
|
import { decodeTransform, encodeTransform } from "./lib/nativeMessaging";
|
|
import { Message } from "./messaging";
|
|
|
|
import { handleSessionMessage, handleMediaMessage, stopReceiverApp }
|
|
from "./components/chromecast";
|
|
import { startDiscovery, stopDiscovery } from "./components/discovery";
|
|
import { startMediaServer, stopMediaServer } from "./components/mediaServer";
|
|
import { startReceiverSelector, stopReceiverSelector }
|
|
from "./components/receiverSelector";
|
|
|
|
import { __applicationName, __applicationVersion } from "../../package.json";
|
|
|
|
|
|
process.on("SIGTERM", () => {
|
|
stopDiscovery();
|
|
stopMediaServer();
|
|
stopReceiverSelector();
|
|
});
|
|
|
|
|
|
/**
|
|
* Handle incoming messages from the extension and forward
|
|
* them to the appropriate handlers.
|
|
*
|
|
* Initializes the counterpart objects and is responsible
|
|
* for managing existing ones.
|
|
*/
|
|
decodeTransform.on("data", (message: Message) => {
|
|
if (message.subject.startsWith("bridge:session/")) {
|
|
handleSessionMessage(message);
|
|
return;
|
|
}
|
|
if (message.subject.startsWith("bridge:media/")) {
|
|
handleMediaMessage(message);
|
|
return;
|
|
}
|
|
|
|
|
|
switch (message.subject) {
|
|
case "bridge:getInfo":
|
|
case "bridge:/getInfo": {
|
|
encodeTransform.write(__applicationVersion);
|
|
break;
|
|
}
|
|
|
|
case "bridge:initialize": {
|
|
startDiscovery(message.data);
|
|
break;
|
|
}
|
|
|
|
case "bridge:stopReceiverApp": {
|
|
const { host, port } = message.data.receiver;
|
|
stopReceiverApp(host, port);
|
|
break;
|
|
}
|
|
|
|
// Receiver selector
|
|
case "bridge:openReceiverSelector": {
|
|
startReceiverSelector(message.data); break;
|
|
}
|
|
case "bridge:closeReceiverSelector": {
|
|
stopReceiverSelector(); break;
|
|
}
|
|
|
|
// Media server
|
|
case "bridge:startMediaServer": {
|
|
const { filePath, port } = message.data;
|
|
startMediaServer(filePath, port);
|
|
break;
|
|
}
|
|
case "bridge:stopMediaServer": {
|
|
stopMediaServer();
|
|
break;
|
|
}
|
|
}
|
|
});
|