1
+ using Autofac ;
2
+ using Microsoft . Extensions . Logging ;
3
+ using Surging . Core . CPlatform ;
4
+ using Surging . Core . CPlatform . Module ;
5
+ using Surging . Core . CPlatform . Runtime . Server ;
6
+ using Surging . Core . CPlatform . Runtime . Server . Implementation ;
7
+ using Surging . Core . Grpc . Runtime ;
8
+ using Surging . Core . Grpc . Runtime . Implementation ;
9
+
10
+ namespace Surging . Core . Grpc
11
+ {
12
+ public class GrpcModule : EnginePartModule
13
+ {
14
+ public override void Initialize ( AppModuleContext context )
15
+ {
16
+ base . Initialize ( context ) ;
17
+ }
18
+
19
+ protected override void RegisterBuilder ( ContainerBuilderWrapper builder )
20
+ {
21
+ builder . Register ( provider =>
22
+ {
23
+ return new DefaultGrpcServiceEntryProvider (
24
+ provider . Resolve < IServiceEntryProvider > ( ) ,
25
+ provider . Resolve < ILogger < DefaultGrpcServiceEntryProvider > > ( ) ,
26
+ provider . Resolve < CPlatformContainer > ( )
27
+ ) ;
28
+ } ) . As ( typeof ( IGrpcServiceEntryProvider ) ) . SingleInstance ( ) ;
29
+ if ( AppConfig . ServerOptions . Protocol == CommunicationProtocol . WS )
30
+ {
31
+ RegisterDefaultProtocol ( builder ) ;
32
+ }
33
+ else if ( AppConfig . ServerOptions . Protocol == CommunicationProtocol . None )
34
+ {
35
+ RegisterGrpcProtocol ( builder ) ;
36
+ }
37
+ }
38
+
39
+ private static void RegisterDefaultProtocol ( ContainerBuilderWrapper builder )
40
+ {
41
+
42
+ builder . Register ( provider =>
43
+ {
44
+ return new GrpcServerMessageListener (
45
+ provider . Resolve < ILogger < GrpcServerMessageListener > > ( ) ,
46
+ provider . Resolve < IGrpcServiceEntryProvider > ( )
47
+ ) ;
48
+ } ) . SingleInstance ( ) ;
49
+ builder . Register ( provider =>
50
+ {
51
+ var messageListener = provider . Resolve < GrpcServerMessageListener > ( ) ;
52
+ return new DefaultServiceHost ( async endPoint =>
53
+ {
54
+ await messageListener . StartAsync ( endPoint ) ;
55
+ return messageListener ;
56
+ } , null ) ;
57
+
58
+ } ) . As < IServiceHost > ( ) ;
59
+ }
60
+
61
+ private static void RegisterGrpcProtocol ( ContainerBuilderWrapper builder )
62
+ {
63
+ builder . Register ( provider =>
64
+ {
65
+ return new GrpcServerMessageListener ( provider . Resolve < ILogger < GrpcServerMessageListener > > ( ) ,
66
+ provider . Resolve < IGrpcServiceEntryProvider > ( )
67
+ ) ;
68
+ } ) . SingleInstance ( ) ;
69
+ builder . Register ( provider =>
70
+ {
71
+ var messageListener = provider . Resolve < GrpcServerMessageListener > ( ) ;
72
+ return new GrpcServiceHost ( async endPoint =>
73
+ {
74
+ await messageListener . StartAsync ( endPoint ) ;
75
+ return messageListener ;
76
+ } ) ;
77
+
78
+ } ) . As < IServiceHost > ( ) ;
79
+ }
80
+ }
81
+ }
82
+
0 commit comments