public override Empty AddPairConnectors(PairConnector pairConnector) { AssertPerformedByManager(); Assert(!string.IsNullOrEmpty(pairConnector.ResourceConnectorSymbol), "resource token symbol should not be empty"); Assert(!string.IsNullOrEmpty(pairConnector.NativeConnectorSymbol), "native token symbol symbol should not be empty"); Assert(State.Connectors[pairConnector.ResourceConnectorSymbol] == null, "resource token symbol has been existed"); Assert(State.Connectors[pairConnector.NativeConnectorSymbol] == null, "native token symbol has been existed"); var resourceConnector = new Connector { Symbol = pairConnector.ResourceConnectorSymbol, VirtualBalance = pairConnector.ResourceVirtualBalance, IsVirtualBalanceEnabled = pairConnector.IsResourceVirtualBalanceEnabled, IsPurchaseEnabled = pairConnector.IsPurchaseEnabled, RelatedSymbol = pairConnector.NativeConnectorSymbol, Weight = pairConnector.ResourceWeight }; AssertValidConnectorAndNormalizeWeight(resourceConnector); var nativeTokenToResourceConnector = new Connector { Symbol = pairConnector.NativeConnectorSymbol, VirtualBalance = pairConnector.NativeVirtualBalance, IsVirtualBalanceEnabled = pairConnector.IsNativeVirtualBalanceEnabled, IsPurchaseEnabled = pairConnector.IsPurchaseEnabled, RelatedSymbol = pairConnector.ResourceConnectorSymbol, Weight = pairConnector.NativeWeight }; AssertValidConnectorAndNormalizeWeight(nativeTokenToResourceConnector); int count = State.ConnectorCount.Value; State.ConnectorSymbols[count + 1] = resourceConnector.Symbol; State.Connectors[resourceConnector.Symbol] = resourceConnector; State.ConnectorSymbols[count + 2] = nativeTokenToResourceConnector.Symbol; State.Connectors[nativeTokenToResourceConnector.Symbol] = nativeTokenToResourceConnector; State.ConnectorCount.Value = count + 2; return(new Empty()); }
public override Empty AddPairConnectors(PairConnector pairConnector) { AssertControllerForManageConnector(); Assert(!string.IsNullOrEmpty(pairConnector.ResourceConnectorSymbol), "resource token symbol should not be empty"); var nativeConnectorSymbol = NtTokenPrefix.Append(pairConnector.ResourceConnectorSymbol); Assert(State.Connectors[pairConnector.ResourceConnectorSymbol] == null, "resource token symbol has been existed"); //AssertValidTokenOwnShip(pairConnector.ResourceConnectorSymbol, Context.Sender); var resourceConnector = new Connector { Symbol = pairConnector.ResourceConnectorSymbol, IsPurchaseEnabled = false, RelatedSymbol = nativeConnectorSymbol, Weight = pairConnector.ResourceWeight }; AssertValidConnectorAndNormalizeWeight(resourceConnector); var nativeTokenToResourceConnector = new Connector { Symbol = nativeConnectorSymbol, VirtualBalance = pairConnector.NativeVirtualBalance, IsVirtualBalanceEnabled = true, IsPurchaseEnabled = false, RelatedSymbol = pairConnector.ResourceConnectorSymbol, Weight = pairConnector.NativeWeight, IsDepositAccount = true }; AssertValidConnectorWeight(nativeTokenToResourceConnector); int count = State.ConnectorCount.Value; State.ConnectorSymbols[++count] = resourceConnector.Symbol; State.Connectors[resourceConnector.Symbol] = resourceConnector; State.ConnectorSymbols[++count] = nativeTokenToResourceConnector.Symbol; State.Connectors[nativeTokenToResourceConnector.Symbol] = nativeTokenToResourceConnector; State.ConnectorCount.Value = count; return(new Empty()); }