annotate codegear/CodeGearManager.cs @ 26:45ff08d59fda

update CGM
author riono <e165729@ie.u-ryukyu.ac.jp>
date Tue, 12 Jan 2021 21:23:23 +0900
parents 3aaa77e12493
children 84e0b85af821
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
26
45ff08d59fda update CGM
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 20
diff changeset
1 using System;
20
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
2 using System.Collections.Concurrent;
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
3 using System.Threading;
26
45ff08d59fda update CGM
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 20
diff changeset
4 using Christie_net.daemon;
20
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
5 using Christie_net.datagear;
26
45ff08d59fda update CGM
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 20
diff changeset
6 using Christie_net.datagear.command;
20
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
7
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
8 namespace Christie_net.codegear {
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
9 public class CodeGearManager {
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
10 private ConcurrentDictionary<string, DataGearManager> dgmList = new ConcurrentDictionary<string, DataGearManager>();
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
11 private ConcurrentDictionary<int, CodeGearManager> cgmList = new ConcurrentDictionary<int, CodeGearManager>();
26
45ff08d59fda update CGM
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 20
diff changeset
12 private ThreadPoolExecutors threadPoolExecutors;
20
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
13 private LocalDataGearManager localDgm = new LocalDataGearManager();
26
45ff08d59fda update CGM
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 20
diff changeset
14 private ConcurrentDictionary<string, IncomingTcpConnection> acceptHash =
45ff08d59fda update CGM
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 20
diff changeset
15 new ConcurrentDictionary<string, IncomingTcpConnection>();
20
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
16 public int cgmID;
26
45ff08d59fda update CGM
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 20
diff changeset
17 public ChristieDaemon daemon;
20
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
18 public int localPort;
26
45ff08d59fda update CGM
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 20
diff changeset
19
45ff08d59fda update CGM
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 20
diff changeset
20 public CodeGearManager(int cgmID, ThreadPoolExecutors exe, ConcurrentDictionary<int, CodeGearManager> cgmList, int localPort) {
45ff08d59fda update CGM
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 20
diff changeset
21 this.dgmList.TryAdd("local", localDgm);
45ff08d59fda update CGM
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 20
diff changeset
22 this.cgmList = cgmList;
45ff08d59fda update CGM
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 20
diff changeset
23 this.threadPoolExecutors = exe;
45ff08d59fda update CGM
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 20
diff changeset
24 this.cgmID = cgmID;
45ff08d59fda update CGM
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 20
diff changeset
25 this.localPort = localPort;
45ff08d59fda update CGM
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 20
diff changeset
26 this.daemon = new ChristieDaemon(localPort, this);
45ff08d59fda update CGM
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 20
diff changeset
27 this.daemon.Listen();
45ff08d59fda update CGM
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 20
diff changeset
28 }
45ff08d59fda update CGM
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 20
diff changeset
29
45ff08d59fda update CGM
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 20
diff changeset
30 public LocalDataGearManager GetLocalDGM() {
45ff08d59fda update CGM
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 20
diff changeset
31 return localDgm;
45ff08d59fda update CGM
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 20
diff changeset
32 }
45ff08d59fda update CGM
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 20
diff changeset
33
45ff08d59fda update CGM
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 20
diff changeset
34 public DataGearManager GetDGM(string dgmName) {
45ff08d59fda update CGM
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 20
diff changeset
35 if (dgmList.ContainsKey(dgmName)) {
45ff08d59fda update CGM
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 20
diff changeset
36 return dgmList[dgmName];
45ff08d59fda update CGM
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 20
diff changeset
37 } else {
45ff08d59fda update CGM
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 20
diff changeset
38 throw new ArgumentNullException("DGM " + dgmName + " is not found");
45ff08d59fda update CGM
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 20
diff changeset
39 }
45ff08d59fda update CGM
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 20
diff changeset
40 }
45ff08d59fda update CGM
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 20
diff changeset
41
45ff08d59fda update CGM
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 20
diff changeset
42 public RemoteDataGearManager CreateRemoteDGM(string dgmName, string address, int port) {
45ff08d59fda update CGM
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 20
diff changeset
43 RemoteDataGearManager remote = new RemoteDataGearManager(dgmName, address, port, this);
45ff08d59fda update CGM
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 20
diff changeset
44 }
20
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
45 }
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
46 }