view 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
line wrap: on
line source

using System;
using System.Collections.Concurrent;
using System.Threading;
using Christie_net.daemon;
using Christie_net.datagear;
using Christie_net.datagear.command;

namespace Christie_net.codegear {
public class CodeGearManager {
    private ConcurrentDictionary<string, DataGearManager> dgmList = new ConcurrentDictionary<string, DataGearManager>();
    private ConcurrentDictionary<int, CodeGearManager> cgmList = new ConcurrentDictionary<int, CodeGearManager>();
    private ThreadPoolExecutors threadPoolExecutors;
    private LocalDataGearManager localDgm = new LocalDataGearManager();
    private ConcurrentDictionary<string, IncomingTcpConnection> acceptHash =
        new ConcurrentDictionary<string, IncomingTcpConnection>();
    public int cgmID;
    public ChristieDaemon daemon;
    public int localPort;

    public CodeGearManager(int cgmID, ThreadPoolExecutors exe, ConcurrentDictionary<int, CodeGearManager> cgmList, int localPort) {
        this.dgmList.TryAdd("local", localDgm);
        this.cgmList = cgmList;
        this.threadPoolExecutors = exe;
        this.cgmID = cgmID;
        this.localPort = localPort;
        this.daemon = new ChristieDaemon(localPort, this);
        this.daemon.Listen();
    }

    public LocalDataGearManager GetLocalDGM() {
        return localDgm;
    }

    public DataGearManager GetDGM(string dgmName) {
        if (dgmList.ContainsKey(dgmName)) {
            return dgmList[dgmName];
        } else {
            throw new ArgumentNullException("DGM " + dgmName + " is not found");
        }
    }

    public RemoteDataGearManager CreateRemoteDGM(string dgmName, string address, int port) {
        RemoteDataGearManager remote = new RemoteDataGearManager(dgmName, address, port, this);
    }
}
}