MediaServerConfig.java 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. package com.genersoft.iot.vmp.media;
  2. import com.genersoft.iot.vmp.conf.MediaConfig;
  3. import com.genersoft.iot.vmp.media.bean.MediaServer;
  4. import com.genersoft.iot.vmp.media.event.mediaServer.MediaServerChangeEvent;
  5. import com.genersoft.iot.vmp.media.service.IMediaServerService;
  6. import lombok.extern.slf4j.Slf4j;
  7. import org.springframework.beans.factory.annotation.Autowired;
  8. import org.springframework.boot.CommandLineRunner;
  9. import org.springframework.context.ApplicationEventPublisher;
  10. import org.springframework.core.annotation.Order;
  11. import org.springframework.stereotype.Component;
  12. import java.util.List;
  13. /**
  14. * 启动是从配置文件加载节点信息,以及发送个节点状态管理去控制节点状态
  15. */
  16. @Slf4j
  17. @Component
  18. @Order(value=12)
  19. public class MediaServerConfig implements CommandLineRunner {
  20. @Autowired
  21. private ApplicationEventPublisher applicationEventPublisher;
  22. @Autowired
  23. private IMediaServerService mediaServerService;
  24. @Autowired
  25. private MediaConfig mediaConfig;
  26. @Override
  27. public void run(String... strings) throws Exception {
  28. // 清理所有在线节点的缓存信息
  29. mediaServerService.clearMediaServerForOnline();
  30. MediaServer defaultMediaServer = mediaServerService.getDefaultMediaServer();
  31. MediaServer mediaSerItemInConfig = mediaConfig.getMediaSerItem();
  32. if (defaultMediaServer != null && mediaSerItemInConfig.getId().equals(defaultMediaServer.getId())) {
  33. mediaServerService.update(mediaSerItemInConfig);
  34. }else {
  35. if (defaultMediaServer != null) {
  36. mediaServerService.delete(defaultMediaServer.getId());
  37. }
  38. MediaServer mediaServerItem = mediaServerService.getOneFromDatabase(mediaSerItemInConfig.getId());
  39. if (mediaServerItem == null) {
  40. mediaServerService.add(mediaSerItemInConfig);
  41. }else {
  42. mediaServerService.update(mediaSerItemInConfig);
  43. }
  44. }
  45. // 发送媒体节点变化事件
  46. mediaServerService.syncCatchFromDatabase();
  47. // 获取所有的zlm, 并开启主动连接
  48. List<MediaServer> all = mediaServerService.getAllFromDatabase();
  49. log.info("[媒体节点] 加载节点列表, 共{}个节点", all.size());
  50. MediaServerChangeEvent event = new MediaServerChangeEvent(this);
  51. event.setMediaServerItemList(all);
  52. applicationEventPublisher.publishEvent(event);
  53. }
  54. }