123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 |
- /*
- * @Author: LinkLeong link@icewhale.com
- * @Date: 2022-07-12 09:48:56
- * @LastEditors: LinkLeong
- * @LastEditTime: 2022-09-02 22:10:05
- * @FilePath: /CasaOS/service/service.go
- * @Description:
- * @Website: https://www.casaos.io
- * Copyright (c) 2022 by icewhale, All Rights Reserved.
- */
- package service
- import (
- "github.com/IceWhaleTech/CasaOS-Common/external"
- "github.com/IceWhaleTech/CasaOS/codegen/message_bus"
- "github.com/IceWhaleTech/CasaOS/pkg/config"
- "github.com/gorilla/websocket"
- "github.com/patrickmn/go-cache"
- "gorm.io/gorm"
- )
- var Cache *cache.Cache
- var (
- MyService Repository
- )
- var (
- WebSocketConns []*websocket.Conn
- SocketRun bool
- )
- type Repository interface {
- Casa() CasaService
- Connections() ConnectionsService
- Gateway() external.ManagementService
- Health() HealthService
- Notify() NotifyServer
- Rely() RelyService
- Shares() SharesService
- System() SystemService
- Storage() StorageService
- MessageBus() *message_bus.ClientWithResponses
- Peer() PeerService
- Other() OtherService
- }
- func NewService(db *gorm.DB, RuntimePath string) Repository {
- gatewayManagement, err := external.NewManagementService(RuntimePath)
- if err != nil && len(RuntimePath) > 0 {
- panic(err)
- }
- return &store{
- casa: NewCasaService(),
- connections: NewConnectionsService(db),
- gateway: gatewayManagement,
- notify: NewNotifyService(db),
- rely: NewRelyService(db),
- system: NewSystemService(),
- health: NewHealthService(),
- shares: NewSharesService(db),
- storage: NewStorageService(),
- other: NewOtherService(),
- peer: NewPeerService(db),
- }
- }
- type store struct {
- peer PeerService
- db *gorm.DB
- casa CasaService
- notify NotifyServer
- rely RelyService
- system SystemService
- shares SharesService
- connections ConnectionsService
- gateway external.ManagementService
- storage StorageService
- health HealthService
- other OtherService
- }
- func (c *store) Storage() StorageService {
- return c.storage
- }
- func (c *store) Peer() PeerService {
- return c.peer
- }
- func (c *store) Other() OtherService {
- return c.other
- }
- func (c *store) Gateway() external.ManagementService {
- return c.gateway
- }
- func (s *store) Connections() ConnectionsService {
- return s.connections
- }
- func (s *store) Shares() SharesService {
- return s.shares
- }
- func (c *store) Rely() RelyService {
- return c.rely
- }
- func (c *store) System() SystemService {
- return c.system
- }
- func (c *store) Notify() NotifyServer {
- return c.notify
- }
- func (c *store) Casa() CasaService {
- return c.casa
- }
- func (c *store) Health() HealthService {
- return c.health
- }
- func (c *store) MessageBus() *message_bus.ClientWithResponses {
- client, _ := message_bus.NewClientWithResponses("", func(c *message_bus.Client) error {
- // error will never be returned, as we always want to return a client, even with wrong address,
- // in order to avoid panic.
- //
- // If we don't avoid panic, message bus becomes a hard dependency, which is not what we want.
- messageBusAddress, err := external.GetMessageBusAddress(config.CommonInfo.RuntimePath)
- if err != nil {
- c.Server = "message bus address not found"
- return nil
- }
- c.Server = messageBusAddress
- return nil
- })
- return client
- }
|