@@ -2,48 +2,18 @@ import zlib from "zlib";
22import { promisify } from "util" ;
33import { Request , Response } from "express" ;
44import { Injectable , Logger } from "@nestjs/common" ;
5-
6- type StartFieldData = {
7- data ?: Buffer ;
8- gipped ?: boolean ;
9- signup_fragment ?: number ;
10- tick ?: number ;
11- tps ?: number ;
12- map ?: string ;
13- keyframe_interval ?: number ;
14- protocol ?: number ;
15- [ key : string ] : any ;
16- } ;
17-
18- type FullFieldData = {
19- data ?: Buffer ;
20- gipped ?: boolean ;
21- tick ?: number ;
22- [ key : string ] : any ;
23- } ;
24-
25- type DeltaFieldData = {
26- data ?: Buffer ;
27- gipped ?: boolean ;
28- timestamp ?: number ;
29- endtick ?: number ;
30- [ key : string ] : any ;
31- } ;
32-
33- type Fragment = {
34- start ?: StartFieldData ;
35- full ?: FullFieldData ;
36- delta ?: DeltaFieldData ;
37- [ key : string ] : any ;
38- } ;
39-
40- type Broadcast = Fragment [ ] ;
5+ import {
6+ Fragment ,
7+ StartFieldData ,
8+ FullFieldData ,
9+ DeltaFieldData ,
10+ } from "./types/fragment.types" ;
4111
4212@Injectable ( )
4313export class MatchRelayService {
4414 private readonly gzip = promisify ( zlib . gzip ) ;
4515
46- private readonly broadcasts : { [ key : string ] : Broadcast } = { } ;
16+ private readonly broadcasts : { [ key : string ] : Fragment [ ] } = { } ;
4717
4818 constructor ( private readonly logger : Logger ) { }
4919
@@ -246,9 +216,7 @@ export class MatchRelayService {
246216 broadcast [ fragmentIndex ] [ field ] . data = compressedBlob ;
247217 } )
248218 . catch ( ( error : Error ) => {
249- this . logger . error (
250- `cannot gzip: ${ error } ` ,
251- ) ;
219+ this . logger . error ( `cannot gzip: ${ error } ` ) ;
252220 broadcast [ fragmentIndex ] [ field ] . gipped = false ;
253221 broadcast [ fragmentIndex ] [ field ] . data = totalBuffer ;
254222 } )
@@ -280,8 +248,7 @@ export class MatchRelayService {
280248 ) ;
281249 }
282250
283- private getMatchBroadcastEndTick ( broadcast : Broadcast ) : number {
284- // Only delta fields have endtick, full fields don't
251+ private getMatchBroadcastEndTick ( broadcast : Fragment [ ] ) : number {
285252 for ( let i = broadcast . length - 1 ; i >= 0 ; i -- ) {
286253 const fragment = broadcast [ i ] ;
287254 if ( fragment ?. delta ?. endtick != null ) {
0 commit comments