public static async Task <TgConnection> EstablishConnection( ILogger logger, ConnectInfo connectInfo, TgCallMiddlewareChain callMiddlewareChain, TcpClientConnectionHandler?connHandler = null ) { var endpoint = connectInfo.Endpoint; Helpers.Assert(endpoint != null, "endpoint == null"); var tcpClient = await CreateTcpClient(endpoint !, connHandler).ConfigureAwait(false); var tcpTransport = new TcpTransport(tcpClient); if (connectInfo.NeedsInAuth) { var mtPlainTransport = new MtProtoPlainTransport(tcpTransport); var result = await Authenticator.DoAuthentication(mtPlainTransport).ConfigureAwait(false); connectInfo.SetAuth(result); } var session = connectInfo.ToSession().AsVar(); var mtCipherTransport = new MtProtoCipherTransport(tcpTransport, session); var transport = new TgCustomizedTransport(new TgTransport(logger, mtCipherTransport, session), callMiddlewareChain); // TODO: separate Config var config = new GetConfig(); var request = new InitConnection <GetConfig, Config>( apiId: session.Get().ApiId, appVersion: "1.0.0", deviceModel: "PC", langCode: "en", query: config, systemVersion: "Win 10.0", systemLangCode: "en", langPack: "tdesktop", proxy: null, @params: null ); var invokeWithLayer = new InvokeWithLayer <InitConnection <GetConfig, Config>, Config>( layer: SchemeInfo.LayerVersion, query: request ); var cfg = await transport.Call(invokeWithLayer).ConfigureAwait(false); DcInfoKeeper.Update(cfg); return(new TgConnection(session, transport, cfg)); }
protected override JobHandle OnUpdate(JobHandle inputDeps) { if (groupToInit.GetEntityArray().Length == 0) { return(inputDeps); } var sharedIdxs = new List <SharedComponentIndexToAddComponentData>(20); EntityManager.GetAllUniqueSharedComponentData(sharedIdxs); for (int i = 0, length = sharedIdxs.Count; i < length; ++i) { var sharedIdx = sharedIdxs[i]; groupToInit.SetFilter(sharedIdx); if (groupToInit.GetEntityArray().Length == 0) { continue; } var entities = new NativeArray <Entity>(groupToInit.GetEntityArray().ToArray(), Allocator.TempJob); var neuralNetwork = neuralNetworkGroup.GetSharedComponentDataArray <NeuralNetworkComponentData>()[sharedIdx.Index]; var inputCount = neuralNetwork.PerceptronPerLayerCount[0]; neuralNetwork.Inputs = new NativeArray <float>(inputCount * entities.Length, Allocator.Persistent, NativeArrayOptions.UninitializedMemory); int perceptronCount = inputCount, connectionCount = 0, previousCount = perceptronCount; for (int j = 1, length2 = neuralNetwork.PerceptronPerLayerCount.Length; j < length2; ++j) { int perceptronPerLayer = neuralNetwork.PerceptronPerLayerCount[j]; connectionCount += previousCount * perceptronPerLayer; perceptronCount += perceptronPerLayer; previousCount = perceptronPerLayer; } neuralNetwork.ConnectionCountPerNetwork = connectionCount; neuralNetwork.PerceptronCountPerNetwork = perceptronCount; neuralNetwork.ResultCountPerNetwork = perceptronCount - inputCount; neuralNetwork.PerceptronCount = (perceptronCount * entities.Length); neuralNetwork.Results = new NativeArray <float>((perceptronCount * entities.Length) - (inputCount * entities.Length), Allocator.Persistent, NativeArrayOptions.UninitializedMemory); neuralNetwork.Connections = new NativeArray <float>(connectionCount * entities.Length, Allocator.Persistent, NativeArrayOptions.UninitializedMemory); var randomNumbers = new NativeList <float>(connectionCount * entities.Length, Allocator.TempJob); for (int j = 0, count = connectionCount * entities.Length; j < count; ++j) { randomNumbers.Add(UnityEngine.Random.Range(-neuralNetwork.WeightRange, neuralNetwork.WeightRange)); } var job = new InitConnection { PerceptronPerLayer = neuralNetwork.PerceptronPerLayerCount, Connections = neuralNetwork.Connections, RandomNumbers = randomNumbers, ConnectionPerNetwork = connectionCount }; var handle = job.ScheduleBatch(perceptronCount * entities.Length, perceptronCount, inputDeps); JobHandle.ScheduleBatchedJobs(); handle.Complete(); for (int j = 0, entityCount = entities.Length; j < entityCount; ++j) { var entity = entities[j]; EntityManager.AddSharedComponentData(entity, neuralNetwork); EntityManager.AddComponentData(entity, new InitializedComponentData()); EntityManager.RemoveComponent <SharedComponentIndexToAddComponentData>(entity); EntityManager.RemoveComponent <InitializeNeuralNetworkComponentData>(entity); } randomNumbers.Dispose(); entities.Dispose(); } return(inputDeps); }
private void RaiseConnectionStateChange() { RaisePropertyChanged(() => IsConnected); InitConnection.RaiseCanExecuteChanged(); }