Skip to content

Commit

Permalink
fast startup
Browse files Browse the repository at this point in the history
  • Loading branch information
kanreisa committed Aug 20, 2016
1 parent 58d8858 commit aaaa0bd
Show file tree
Hide file tree
Showing 4 changed files with 64 additions and 60 deletions.
2 changes: 1 addition & 1 deletion src/Mirakurun/Program.ts
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@ export default class Program {
return;
}

new ProgramItem(program);
new ProgramItem(program, true);
});

if (dropped === true) {
Expand Down
38 changes: 20 additions & 18 deletions src/Mirakurun/ProgramItem.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ import ServiceItem from "./ServiceItem";

export default class ProgramItem {

constructor(private _data: db.Program) {
constructor(private _data: db.Program, firstAdd = false) {

if (_.program.exists(_data.id) === true) {
let item = _.program.get(_data.id);
Expand All @@ -37,27 +37,29 @@ export default class ProgramItem {

const removedIds = [];

_.program.findByQuery({
data: {
networkId: _data.networkId,
serviceId: _data.serviceId,
startAt: {
$gte: _data.startAt,
$lt: _data.startAt + _data.duration
if (firstAdd === false) {
_.program.findByQuery({
data: {
networkId: _data.networkId,
serviceId: _data.serviceId,
startAt: {
$gte: _data.startAt,
$lt: _data.startAt + _data.duration
}
}
}
}).forEach(item => {
}).forEach(item => {

item.remove();
item.remove();

log.debug(
"ProgramItem#%d (networkId=%d, eventId=%d) has removed for redefine to ProgramItem#%d (eventId=%d)",
item.data.id, item.data.networkId, item.data.eventId,
_data.id, _data.eventId
);
log.debug(
"ProgramItem#%d (networkId=%d, eventId=%d) has removed for redefine to ProgramItem#%d (eventId=%d)",
item.data.id, item.data.networkId, item.data.eventId,
_data.id, _data.eventId
);

removedIds.push(item.data.id);
});
removedIds.push(item.data.id);
});
}

_.program.add(this);
this._updated();
Expand Down
79 changes: 38 additions & 41 deletions src/Mirakurun/Server.ts
Original file line number Diff line number Diff line change
Expand Up @@ -39,10 +39,6 @@ class Server {

const serverConfig = _.config.server;

if (typeof serverConfig.logLevel === "number") {
log.logLevel = serverConfig.logLevel;
}

let addresses: string[] = [];

if (serverConfig.path) {
Expand All @@ -53,55 +49,56 @@ class Server {
addresses = [...addresses, ...system.getPrivateIPv4Addresses(), "127.0.0.1"];
}

addresses.forEach(address => {
const app = express();

const app = express();
const server = http.createServer(app);
app.disable("x-powered-by");

server.timeout = 1000 * 60 * 3;// 3 minutes
app.use(morgan(":remote-addr :remote-user :method :url HTTP/:http-version :status :res[content-length] - :response-time ms :user-agent"));
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());

app.disable("x-powered-by");
app.use((req: express.Request, res: express.Response, next) => {

if (ip.isPrivate(req.ip) === true || !req.ip) {
res.setHeader("Server", "Mirakurun/" + pkg.version);
next();
} else {
res.status(403).end();
}
});

app.use(morgan(":remote-addr :remote-user :method :url HTTP/:http-version :status :res[content-length] - :response-time ms :user-agent"));
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
openapi.initialize({
app: app,               
apiDoc: yaml.safeLoad(fs.readFileSync("apiDefinition.yml", "utf8")),
docsPath: "/docs",
routes: "./lib/Mirakurun/api"
});

app.use((req: express.Request, res: express.Response, next) => {
app.use((err, req, res: express.Response, next) => {

if (ip.isPrivate(req.ip) === true || !req.ip) {
res.setHeader("Server", "Mirakurun/" + pkg.version);
next();
} else {
res.status(403).end();
}
});
log.error(JSON.stringify(err, null, " "));
console.error(err.stack);

openapi.initialize({
app: app,               
apiDoc: yaml.safeLoad(fs.readFileSync("apiDefinition.yml", "utf8")),
docsPath: "/docs",
routes: "./lib/Mirakurun/api"
});
if (res.headersSent === false) {
res.writeHead(err.status || 500, {
"Content-Type": "application/json"
});
}

app.use((err, req, res: express.Response, next) => {
res.end(JSON.stringify({
code: res.statusCode,
reason: err.message || res.statusMessage,
errors: err.errors
}));

log.error(JSON.stringify(err, null, " "));
console.error(err.stack);
next();
});

if (res.headersSent === false) {
res.writeHead(err.status || 500, {
"Content-Type": "application/json"
});
}
addresses.forEach(address => {

res.end(JSON.stringify({
code: res.statusCode,
reason: err.message || res.statusMessage,
errors: err.errors
}));
const server = http.createServer(app);

next();
});
server.timeout = 1000 * 60 * 3;// 3 minutes

if (regexp.unixDomainSocket.test(address) === true || regexp.windowsNamedPipe.test(address) === true) {
if (process.platform !== "win32" && fs.existsSync(address) === true) {
Expand Down
5 changes: 5 additions & 0 deletions src/server.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ import Service from "./Mirakurun/Service";
import Program from "./Mirakurun/Program";
import Server from "./Mirakurun/Server";
import * as config from "./Mirakurun/config";
import * as log from "./Mirakurun/log";

process.title = "Mirakurun: Server";

Expand All @@ -54,6 +55,10 @@ _.config.server = config.loadServer();
_.config.channels = config.loadChannels();
_.config.tuners = config.loadTuners();

if (typeof _.config.server.logLevel === "number") {
log.logLevel = _.config.server.logLevel;
}

new Event();
new Tuner();
new Channel();
Expand Down

0 comments on commit aaaa0bd

Please sign in to comment.