public Contract Load(string address, string privKey) { Owner owner = GetOwner(address); if (owner != null) { Contract contract = null; switch (owner.Type) { case ContractType.Manager: contract = new ManagerContract(owner.Name, owner.OwnerType); break; case ContractType.Messenger: contract = new MessengerContract(owner.Name, (MessagerType)owner.OwnerType); break; } if (contract != null) { contract.Update(owner.PubKey, privKey, address, owner.State); } return(contract); } return(null); }
public void LoadManagers(Form form) { if (this.managers.Count == 0) { ThreadStack.Run(delegate(object[] param) { if (Constants.LinuxMode) { ClientExecutor.Instance.Start(); } foreach (string file in Directory.GetFiles(Constants.ContractsDirectory, "*.ct")) { using (StreamReader reader = new StreamReader(file)) { ManagerContract manager = new ManagerContract(reader); this.managers.Add(manager); if (Constants.LinuxMode) { Owner owner = ClientExecutor.Instance.GetOwner(manager.Address); if (owner != null) { manager.Update(owner); manager.LoadContracts(); } } else { MessengerContract contract = new MessengerContract("Александр Гордиенко", MessagerType.Private); contract.Update("0", null, null, ContractState.Online); contract.Members.Add(new Member("Вася", "1", ContractState.Online, MessagerType.Private)); contract.Members.Add(new Member("Петя", "2", ContractState.Offline, MessagerType.Private)); manager.Contracts.Add(contract); contract = new MessengerContract("Вася", MessagerType.Public); contract.Update("1", null, null, ContractState.Online); contract.Members.Add(new Member("Андрей", "3", ContractState.Online, MessagerType.Public)); contract.Members.Add(new Member("Сергей", "4", ContractState.Offline, MessagerType.Private)); manager.Contracts.Add(contract); contract = new MessengerContract("Андрей", MessagerType.Public); contract.Update("3", null, null, ContractState.Online); contract.Members.Add(new Member("Алексей", "5", ContractState.Offline, MessagerType.Public)); contract.Members.Add(new Member("Михаил", "6", ContractState.Online, MessagerType.Public)); manager.Contracts.Add(contract); } } } Utils.Invoke(form, this.StartLoaded); }); } }
public void LoadContracts() { ClientExecutor.Instance.Last(); this.contracts.Clear(); System.Numerics.BigInteger index = -1; while (true) { string[] res = ClientExecutor.Instance.Runmethod(this.Address, "getContract", index.ToString(), ParseType.Int, ParseType.Slice, ParseType.Slice); if (res == null) { ClientExecutor.Instance.LastWait(1000); continue; } index = System.Numerics.BigInteger.Parse(res[0]); if (index == -1) { break; } string pubKey = index.ToString(); string address = Utils.ParseAddress(res[1]); string data = res[2].Substring(4); byte[] keyData = new BigInteger(this.PrivKey).ToByteArrayUnsigned(); byte[] valueData = Utils.HexToByteArray(data); byte[] deccrypt = Crypto.Transform(keyData, valueData, false); string privKey = new System.Numerics.BigInteger(deccrypt).ToString(); Owner owner = ClientExecutor.Instance.GetOwner(address); string name = "invalid"; int type = 0; ContractState state = ContractState.Offline; if (owner != null) { name = owner.Name; type = owner.OwnerType; state = owner.State; } MessengerContract messenger = new MessengerContract(name, (MessagerType)type); messenger.Update(pubKey, privKey, address, state); this.contracts.Add(messenger); } this.GetGrams(); }
private void contractsComboBox_SelectedIndexChanged(object sender, EventArgs e) { this.CurrentUser = this.contractsComboBox.SelectedItem as MessengerContract; }