twitter.ts 1000 B

1234567891011121314151617181920212223242526272829303132333435
  1. import * as fs from 'fs';
  2. import * as log4js from 'log4js';
  3. import * as path from 'path';
  4. const logger = log4js.getLogger('twitter');
  5. logger.level = 'info';
  6. function work(lock: ILock, lockfile: string) {
  7. if (lock.feed.length === 0) {
  8. setTimeout(() => {
  9. work(lock, lockfile);
  10. }, 60000);
  11. return;
  12. }
  13. if (lock.workon >= lock.feed.length) lock.workon = 0;
  14. if (!lock.threads[lock.feed[lock.workon]] ||
  15. !lock.threads[lock.feed[lock.workon]].subscribers ||
  16. lock.threads[lock.feed[lock.workon]].subscribers.length === 0) {
  17. logger.error(`nobody subscribes thread ${lock.feed[lock.workon]}, removing from feed`);
  18. lock.feed.splice(lock.workon, 1);
  19. fs.writeFileSync(path.resolve(lockfile), JSON.stringify(lock));
  20. work(lock, lockfile);
  21. return;
  22. }
  23. // TODO: Work on lock.feed[lock.workon]
  24. lock.workon++;
  25. fs.writeFileSync(path.resolve(lockfile), JSON.stringify(lock));
  26. setTimeout(() => {
  27. work(lock, lockfile);
  28. }, 60000);
  29. }
  30. export default work;