Mercurial > hg > Database > Christie-sharp
view datagear/RemoteDataGearManager.cs @ 26:45ff08d59fda
update CGM
author | riono <e165729@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 12 Jan 2021 21:23:23 +0900 |
parents | datagear/command/RemoteDataGearManager.cs@3aaa77e12493 |
children | efb06874a34e |
line wrap: on
line source
using System; using System.Net; using System.Net.Sockets; using System.Threading.Tasks; using Christie_net.codegear; using Christie_net.daemon; using Christie_net.datagear.command; using Christie_net.datagear.dg; namespace Christie_net.datagear { public class RemoteDataGearManager : DataGearManager { private Connection connection; private CodeGearManager cgm; private bool connect = false; private object lockObj = new object(); public RemoteDataGearManager (string address, int port, CodeGearManager cgm) { this.cgm = cgm; RemoteDataGearManager manager = this; Task.Factory.StartNew(() => { do { try { IPHostEntry host = Dns.GetHostEntry(address); IPAddress ipAddress = host.AddressList[0]; IPEndPoint remoteEndPoint = new IPEndPoint(ipAddress, port); Socket socket = new Socket(ipAddress.AddressFamily, SocketType.Stream, ProtocolType.Tcp); socket.Bind(remoteEndPoint); socket.Listen((int) SocketOptionName.MaxConnections); socket.NoDelay = true; Socket listener = socket.Accept(); connection = new Connection(listener, cgm); } catch { } } while (!connect); IncomingTcpConnection incoming = new IncomingTcpConnection(connection); incoming.SetManager(manager); Task.Factory.StartNew( () => incoming.Run(), TaskCreationOptions.LongRunning); OutboundTcpConnection outbound = new OutboundTcpConnection(connection); Task.Factory.StartNew( () => outbound.Run(), TaskCreationOptions.LongRunning); }); } public override void Put(string key, object data) { throw new NotImplementedException(); } public override void RunCommand(Command cm) { throw new NotImplementedException(); } public override void ResolveWaitCommand(string key, DataGear<Type> dg) { throw new NotImplementedException(); } public override void Finish() { throw new NotImplementedException(); } public override void Close() { throw new NotImplementedException(); } public override void Shutdown() { throw new NotImplementedException(); } } }