@steedos/service-packages 2.4.6 → 2.4.8-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/index.js +48 -2
  2. package/package.json +2 -2
package/index.js CHANGED
@@ -1,4 +1,5 @@
1
1
  "use strict";
2
+ const { Register } = require('@steedos/metadata-registrar');
2
3
  const project = require('./package.json');
3
4
  const packageName = project.name;
4
5
  /**
@@ -9,6 +10,15 @@ const packageName = project.name;
9
10
  const getCacherKey = (serviceInfo)=>{
10
11
  return `#packages.${serviceInfo.name}.${serviceInfo.instanceID}`
11
12
  }
13
+
14
+ const getStartingCacherKey = ()=>{
15
+ return `#packages_starting`
16
+ }
17
+
18
+ const getStartedCacherKey = ()=>{
19
+ return `#packages_started`
20
+ }
21
+
12
22
  const getInstallCacherKey = (serviceInfo)=>{
13
23
  return `#packages_install.${serviceInfo.name}.${serviceInfo.nodeID}`
14
24
  }
@@ -18,6 +28,7 @@ const getRoutersInfoCacherKey = (packageName)=>{
18
28
  }
19
29
 
20
30
  module.exports = {
31
+ countTimeoutId: null,
21
32
  name: packageName,
22
33
  namespace: "steedos",
23
34
  mixins: [],
@@ -40,12 +51,25 @@ module.exports = {
40
51
  * Actions
41
52
  */
42
53
  actions: {
54
+ starting: {
55
+ async handler(ctx) {
56
+ const { serviceInfo } = ctx.params;
57
+ return await Register.rpush(ctx.broker, { key: getStartingCacherKey(), data: [serviceInfo] })
58
+ }
59
+ },
60
+ started: {
61
+ async handler(ctx) {
62
+ const { serviceInfo } = ctx.params;
63
+ return await Register.rpush(ctx.broker, { key: getStartedCacherKey(), data: [serviceInfo] })
64
+ }
65
+ },
43
66
  offline: {
44
67
  params: {
45
68
  serviceInfo: { type: "object"},
46
69
  },
47
70
  async handler(ctx) {
48
71
  await ctx.broker.call('metadata.delete', {key: getCacherKey(ctx.params.serviceInfo)}, {meta: ctx.meta})
72
+ await this.statisticsActivatedPackages();
49
73
  }
50
74
  },
51
75
  online: {
@@ -54,6 +78,7 @@ module.exports = {
54
78
  },
55
79
  async handler(ctx) {
56
80
  await ctx.broker.call('metadata.add', {key: getCacherKey(ctx.params.serviceInfo), data: ctx.params.serviceInfo}, {meta: ctx.meta})
81
+ await this.statisticsActivatedPackages();
57
82
  }
58
83
  },
59
84
  install: {
@@ -116,14 +141,35 @@ module.exports = {
116
141
  * Events
117
142
  */
118
143
  events: {
119
-
144
+ "$packages.statisticsActivatedPackages": {
145
+ handler(){
146
+ return this.statisticsActivatedPackages()
147
+ }
148
+ }
120
149
  },
121
150
 
122
151
  /**
123
152
  * Methods
124
153
  */
125
154
  methods: {
126
-
155
+ //统计已启动的软件包
156
+ statisticsActivatedPackages: {
157
+ async handler(){
158
+ if(this.countTimeoutId){
159
+ clearTimeout(this.countTimeoutId);
160
+ }
161
+ // console.log(`statisticsActivatedPackages`);
162
+ this.countTimeoutId = setTimeout(async()=>{
163
+ const startingPackages = await Register.filterList(this.broker, {key: getStartingCacherKey()});
164
+ const startedPackages = await Register.filterList(this.broker, {key: getStartedCacherKey()});
165
+ // console.log(`startingPackages`, startingPackages.length, startedPackages.length);
166
+ if(startingPackages.length <= startedPackages.length){
167
+ // console.log(`broadcast $packages.changed========`)
168
+ this.broker.broadcast("$packages.changed", {});
169
+ }
170
+ }, 1000 * 3)
171
+ }
172
+ }
127
173
  },
128
174
 
129
175
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@steedos/service-packages",
3
- "version": "2.4.6",
3
+ "version": "2.4.8-beta.1",
4
4
  "main": "index.js",
5
5
  "scripts": {},
6
6
  "license": "MIT",
@@ -8,5 +8,5 @@
8
8
  "publishConfig": {
9
9
  "access": "public"
10
10
  },
11
- "gitHead": "baf2b26509111eb49b56ea563ce9b86fde8753f7"
11
+ "gitHead": "f35130770cfb86468309f8f9a8ce21a3bbb5b2f6"
12
12
  }