public void TestProcessTransferMessage() { //Message Storage int messageCount = _messageStorage.GetAllMessages().Count(); var newTransferMesage = new TransferMessage() { Header = new TransferMessageHeader() { MessageType = "Unit Test Message", Source = "Unit Test", Status = "Testing", TimeStamp = DateTime.Now.ToString() }, Body = SerializationHelper.SerializeObjectToXml <List <string> >( new List <string>() { "<Test></Test>", "<Test></Test>" } ).DocumentElement }; var response = _service.ProcessTransferMessage(newTransferMesage, "UnitTestSendAdapter"); Assert.IsTrue(response.Header.Status == "Received"); int messageCountAfter = _messageStorage.GetAllMessages().Count(); Assert.IsTrue(messageCountAfter > messageCount); }
public void TestHostedInboundService() { var newTransferMesage = new TransferMessage() { Header = new TransferMessageHeader() { Destination = "Command Center", MessageType = "Unit Test Message", Source = "UnitTestSendAdapter", Status = "Testing", TimeStamp = DateTime.Now.ToString() }, Body = SerializationHelper.SerializeObjectToXml <List <string> >( new List <string>() { "Test 1", "Test 2" } ).DocumentElement }; var response = Connected.Common.ClientWCFServiceInvokerUtil.CallInboundWcfService( "ConnectInBoundHttpEndPoint", newTransferMesage, "Counter Send Adapter"); Assert.IsTrue(response.Header.Status == "Received"); }
public void ChangeOrderPaymentStatus(Message pMessage) { TransferMessage tMessage = pMessage as TransferMessage; Guid pOrderNumber = tMessage.OrderGuid; Console.WriteLine("change ----- - - - --" + pOrderNumber); using (TransactionScope lScope = new TransactionScope()) { using (VideoStoreEntityModelContainer lContainer = new VideoStoreEntityModelContainer()) { Order order = lContainer.Orders.Include("OrderItems.Media.Stocks").Include("Customer.LoginCredential").Where((tOrder) => tOrder.OrderNumber == pOrderNumber).FirstOrDefault(); //LoadMediaStocks(order); MarkAppropriateUnchangedAssociations(order); Console.WriteLine("Change status"); if (tMessage.BTransfer) { order.OrderStatus = "payed"; } else { Console.WriteLine("revert stock"); order.OrderStatus = "fail"; order.RevertStockLevels(); } lContainer.Orders.ApplyChanges(order); lContainer.SaveChanges(); lScope.Complete(); } } }
public void SerializeDeserializeTransferMessage() { var transferMessage = new TransferMessage() { Header = new TransferMessageHeader() { Destination = "Test Destination", Source = "Test Source", Status = "Testing", TimeStamp = DateTime.Now.ToString() }, Body = SerializationHelper.SerializeObjectToXml <List <string> >(new List <string>() { "Test body message" }).DocumentElement }; string transferMessageSerialized = SerializationHelper.SerializeObjectToXml <TransferMessage>(transferMessage).InnerXml; TransferMessage transferMessageDeserialized = (TransferMessage)SerializationHelper.DeSerializeFromString <TransferMessage>(transferMessageSerialized); if (string.IsNullOrWhiteSpace(transferMessageSerialized) && transferMessageDeserialized == null) { Assert.Fail(); } else { Assert.IsTrue(true); } }
//public void Transfer(double pAmount, int pFromAcctNumber, int pToAcctNumber) public void Transfer(Message message) { using (TransactionScope lScope = new TransactionScope()) using (BankEntityModelContainer lContainer = new BankEntityModelContainer()) { //Specify the binding to be used for the client. NetMsmqBinding binding = new NetMsmqBinding(NetMsmqSecurityMode.None); //Specify the address to be used for the client. EndpointAddress address = new EndpointAddress("net.msmq://localhost/private/PublisherMessageQueue"); PublisherServiceClient lClient = new PublisherServiceClient(binding, address); try { TransferMessage transferMessage = message as TransferMessage; double pAmount = transferMessage.Total; int pFromAcctNumber = transferMessage.FromAccountNumber; int pToAcctNumber = transferMessage.ToAccountNumber; Account lFromAcct = GetAccountFromNumber(pFromAcctNumber); Account lToAcct = GetAccountFromNumber(pToAcctNumber); lFromAcct.Withdraw(pAmount); lToAcct.Deposit(pAmount); lContainer.Attach(lFromAcct); lContainer.Attach(lToAcct); lContainer.ObjectStateManager.ChangeObjectState(lFromAcct, System.Data.EntityState.Modified); lContainer.ObjectStateManager.ChangeObjectState(lToAcct, System.Data.EntityState.Modified); lContainer.SaveChanges(); Console.WriteLine("Amount: " + pAmount + " FromAccount: " + pFromAcctNumber + " ToAccount: " + pToAcctNumber); // Return successful result TransferMessage result = new TransferMessage() { Topic = "bank", OrderGuid = transferMessage.OrderGuid, BTransfer = true }; //HostServiceAndPublishMessage(result); lClient.Publish(result); lScope.Complete(); } catch (Exception lException) { // Return Failure result TransferMessage transferMessage = message as TransferMessage; TransferMessage result = new TransferMessage() { Topic = "bank", OrderGuid = transferMessage.OrderGuid, BTransfer = false, Comment = lException.Message }; // HostServiceAndPublishMessage(result); lClient.Publish(result); lScope.Complete(); Console.WriteLine("Error occured while transferring money: " + lException.Message); //throw; } } }
public void PublishToSubscriber(Common.Model.Message pMessage) { if (pMessage is Common.Model.TransferMessage) { TransferMessage lMessage = pMessage as TransferMessage; TransferProvider.Transfer(lMessage.pAmount, lMessage.pFromAcctNumber, lMessage.pToAcctNumber, lMessage.pExternalOrderNumber); } }
protected override void HandleTransfer(CAP_CQRSEntities entities, TransferMessage transfer) { Console.WriteLine(String.Format("Decrease {0}.", transfer.FromAccount)); AccountBalance from = GetAccountEntity(transfer.FromAccount, entities); from.Balance -= transfer.Amount; }
protected override void HandleTransfer(CAP_CQRSEntities entities, TransferMessage transfer) { Console.WriteLine(String.Format("Increase {0}.", transfer.ToAccount)); AccountBalance to = GetAccountEntity(transfer.ToAccount, entities); to.Balance += transfer.Amount; }
public static void Transfer( [PerperWorkerTrigger] IAgentContext <IDictionary <string, BigInteger> > context, [PerperWorker("sender")] string sender, [PerperWorker("message")] TransferMessage message) { var removeTokensPublication = RemoveTokens(context.State, message.From, message.Amount); var addTokensPublication = AddTokens(context.State, message.To, message.Amount); context.MakePublication(removeTokensPublication); context.MakePublication(addTokensPublication); }
/// <summary> /// This method will call a WCF Service that implements the IInboundService Contract /// </summary> /// <param name="activeEndPointName">End point name</param> /// <param name="transferMessage">The message that needs to be submitted</param> public static void CallReceiveAdapterWcfService(string activeEndPointName, TransferMessage transferMessage) { var recvAdapterChannelFactory = new ChannelFactory <IReceiveAdapter>(activeEndPointName); // Create a channel. var wcfClient = recvAdapterChannelFactory.CreateChannel(); // send the message to the adapter wcfClient.ProcessMessage(transferMessage); ((IClientChannel)wcfClient).Close(); }
private void HostServiceAndPublishMessage(TransferMessage message) { //Specify the binding to be used for the client. NetMsmqBinding binding = new NetMsmqBinding(NetMsmqSecurityMode.None); //Specify the address to be used for the client. EndpointAddress address = new EndpointAddress("net.msmq://localhost/private/PublisherMessageQueue"); PublisherServiceClient lClient = new PublisherServiceClient(binding, address); lClient.Publish(message); }
public static TransferMessage ProcessMessage(string Address, int Port, TransferMessage msg) { TransferMessage transferMessage; TransferMessage transferMessage1 = null; byte[] numArray = msg.Compress(); string str = null; string str1 = string.Format("tcp://{0}:{1}/RemoteMessaging", Address, Port); try { TransferConnection.m_Remote = Activator.GetObject(typeof(RemoteMessaging), str1) as RemoteMessaging; } catch { MessageBox.Show(string.Format("Failed to connect to remote server {0} : {1}", Address, Port)); transferMessage = null; return(transferMessage); } try { byte[] numArray1 = TransferConnection.m_Remote.PerformRemoteRequest(msg.GetType().FullName, numArray, out str); if (numArray1 != null) { Type type = Type.GetType(str); if (type == null) { Assembly assembly = Assembly.GetAssembly(typeof(TransferMessage)); if (assembly != null) { type = assembly.GetType(str); } } transferMessage1 = TransferMessage.Decompress(numArray1, type); if (TransferConnection.HasErrors(transferMessage1, type, str)) { transferMessage1 = null; } } else { MessageBox.Show(string.Concat("No Data Received from Remote Server for ", msg.GetType().FullName)); transferMessage = null; return(transferMessage); } } catch (Exception exception) { MessageBox.Show(exception.Message); transferMessage1 = null; } return(transferMessage1); }
public static AuthEntry GetAuthEntry(TransferMessage msg) { // go through the auth list and find the corresponding auth entry for the message foreach(AuthEntry a in AuthList) { // confirm authentication id match and accesslevel if(a.AuthenticationID == msg.AuthenticationID) { return a; } } return null; }
public static bool HasErrors(TransferMessage msg, Type t, string rtype) { if (msg == null) { MessageBox.Show(string.Format("No Message Data Received from Remote Server for {0} ({1})", t, rtype)); return(true); } if (!(msg is ErrorMessage)) { return(false); } MessageBox.Show((msg as ErrorMessage).Message); return(true); }
//public void Transfer(double pAmount, int pFromAcctNumber, int pToAcctNumber) public void Transfer(Message message) { using (TransactionScope lScope = new TransactionScope()) using (BankEntityModelContainer lContainer = new BankEntityModelContainer()) { try { TransferMessage transferMessage = message as TransferMessage; double pAmount = transferMessage.Total; int pFromAcctNumber = transferMessage.FromAccountNumber; int pToAcctNumber = transferMessage.ToAccountNumber; Account lFromAcct = GetAccountFromNumber(pFromAcctNumber); Account lToAcct = GetAccountFromNumber(pToAcctNumber); lFromAcct.Withdraw(pAmount); lToAcct.Deposit(pAmount); lContainer.Attach(lFromAcct); lContainer.Attach(lToAcct); lContainer.ObjectStateManager.ChangeObjectState(lFromAcct, System.Data.EntityState.Modified); lContainer.ObjectStateManager.ChangeObjectState(lToAcct, System.Data.EntityState.Modified); lContainer.SaveChanges(); // Return successful result TransferMessage result = new TransferMessage() { Topic = "transfer", OrderGuid = transferMessage.OrderGuid, BTransfer = true }; HostServiceAndPublishMessage(result); lScope.Complete(); } catch (Exception lException) { // Return Failure result TransferMessage transferMessage = message as TransferMessage; TransferMessage result = new TransferMessage() { Topic = "transfer", OrderGuid = transferMessage.OrderGuid, BTransfer = false, Comment = lException.Message }; HostServiceAndPublishMessage(result); lScope.Complete(); Console.WriteLine("Error occured while transferring money: " + lException.Message); //throw; } } }
// TODO 2d: Command doesn't update current state. public void Transfer(string fromAccount, string toAccount, decimal amount) { try { using (CAP_CQRSEntities entities = new CAP_CQRSEntities()) { using (var tx = new TransactionScope()) { AccountBalance from = GetAccountEntity(fromAccount, entities); if (from.Balance < amount) { throw new ApplicationException("Insufficient funds."); } // INSERT entities.AddToTransfers(new Transfer() { From = fromAccount, To = toAccount, Amount = amount }); // PUBLISH TransferMessage message = new TransferMessage() { FromAccount = fromAccount, ToAccount = toAccount, Amount = amount }; using (var queue = new MessageQueue(IncreaseQueueName)) { queue.Send(message, MessageQueueTransactionType.Automatic); } using (var queue = new MessageQueue(DecreaseQueueName)) { queue.Send(message, MessageQueueTransactionType.Automatic); } entities.SaveChanges(); tx.Complete(); } } } catch (Exception ex) { throw new FaultException(ex.Message); } }
public void Visit(IVisitable pVisitable) { if (pVisitable is Order) { Order lOrder = pVisitable as Order; Result = new TransferMessage() { OrderGuid = lOrder.OrderNumber, FromAccountNumber = mFromAccountNumber, ToAccountNumber = mToAccountNumber, Total = lOrder.Total ?? 0, Topic = "transfer" }; } }
private void HostServiceAndPublishMessage(TransferMessage message) { //Specify the binding to be used for the client. NetMsmqBinding binding = new NetMsmqBinding(NetMsmqSecurityMode.None); //Specify the address to be used for the client. EndpointAddress address = new EndpointAddress("net.msmq://localhost/private/PublisherMessageQueue"); //pOrder.OrderNumber = Guid.NewGuid(); //OrderToTransferMessage lVisitor = new OrderToTransferMessage(UserProvider.ReadUserById(pOrder.Customer.Id).BankAccountNumber, RetrieveVideoStoreAccountNumber()); //lVisitor.Visit(pOrder); PublisherServiceClient lClient = new PublisherServiceClient(binding, address); lClient.Publish(message); }
public static TransferMessage ProcessMessage(string Address, int Port, TransferMessage msg) { byte[] data1 = msg.Compress(); string answerType = (string)null; string url = string.Format("tcp://{0}:{1}/RemoteMessaging", (object)Address, (object)Port); try { TransferConnection.m_Remote = Activator.GetObject(typeof(RemoteMessaging), url) as RemoteMessaging; } catch { int num = (int)MessageBox.Show(string.Format("Failed to connect to remote server {0} : {1}", (object)Address, (object)Port)); return((TransferMessage)null); } TransferMessage msg1; try { byte[] data2 = TransferConnection.m_Remote.PerformRemoteRequest(msg.GetType().FullName, data1, out answerType); if (data2 == null) { int num = (int)MessageBox.Show("No Data Received from Remote Server for " + msg.GetType().FullName); return((TransferMessage)null); } Type type = Type.GetType(answerType); if (type == null) { Assembly assembly = Assembly.GetAssembly(typeof(TransferMessage)); if (assembly != null) { type = assembly.GetType(answerType); } } msg1 = TransferMessage.Decompress(data2, type); if (TransferConnection.HasErrors(msg1, type, answerType)) { msg1 = (TransferMessage)null; } } catch (Exception ex) { int num = (int)MessageBox.Show(ex.Message); msg1 = (TransferMessage)null; } return(msg1); }
private void ThreadProc() { while (!_stopping.WaitOne(10)) { try { using (CAP_CQRSEntities entities = new CAP_CQRSEntities()) { using (var tx = new TransactionScope()) { using (MessageQueue queue = new MessageQueue(_queueName)) { Message message = queue.Receive(TimeSpan.FromSeconds(1.0), MessageQueueTransactionType.Automatic); _wroteEmptyMessage = false; message.Formatter = Formatter; TransferMessage transfer = (TransferMessage)message.Body; HandleTransfer(entities, transfer); entities.SaveChanges(); tx.Complete(); } } } } catch (MessageQueueException mqex) { if (mqex.ErrorCode != TimeoutErrorCode) { Console.WriteLine(mqex.Message); } else { if (!_wroteEmptyMessage) { Console.WriteLine(String.Format("{0} queue empty.", _threadName)); } _wroteEmptyMessage = true; } } catch (Exception ex) { Console.WriteLine(ex.Message); } } }
//TODO : ? Instead of caching maybe creating ChannelFactory as static //public static ChannelFactory<IReceiveAdapter> recvAdapterChannelFactory; public static void CallReceiveAdapterWcfService(Uri uri, TransferMessage transferMessage) { BasicHttpBinding binding = new BasicHttpBinding(); EndpointAddress endpoint = new EndpointAddress(uri); //TODO : Cache ChannelFactory according to URL ChannelFactory <IReceiveAdapter> recvAdapterChannelFactory = new ChannelFactory <IReceiveAdapter>(binding, endpoint); // Create a channel. var wcfClient = recvAdapterChannelFactory.CreateChannel(); wcfClient.ProcessMessage(transferMessage); ((IClientChannel)wcfClient).Close(); recvAdapterChannelFactory.Close(); }
public void SendData(List <Activity> activityList) { var newTransferMesage = new TransferMessage() { Header = new TransferMessageHeader() { Destination = "Inbound Service", MessageType = "Counter Data", Source = "Counter Data", Status = "New Counter Data", TimeStamp = DateTime.Now.ToString() }, Body = SerializationHelper.SerializeObjectToXml <List <Activity> >(activityList).DocumentElement }; //TODO : Check response, if not succesfull, log the message, or implement something like queue Connected.Common.ClientWCFServiceInvokerUtil.CallInboundWcfService("InBoundHttpEndPoint", newTransferMesage, "Counter Send Adapter"); }
public void TestProcessMessage() { var newTransferMesage = new TransferMessage() { Header = new TransferMessageHeader() { Destination = "Receive Adapter", MessageType = "Service Test Message", Source = "Unit Test", Status = "Testing", TimeStamp = DateTime.Now.ToString(CultureInfo.InvariantCulture) }, Body = null }; new ReceiveAdapterService().ProcessMessage(newTransferMesage); Assert.IsTrue(true); }
public void ProcessMessage(TransferMessage transferMessage) { //Parse message content if (transferMessage.Body != null) { try { var xmlSource = transferMessage.Body.OuterXml; var lstActivity = SerializationHelper.DeSerializeFromString <List <Activity> >(xmlSource); //Send to BussinessLayer _bl.ReceiveActivityList(lstActivity); } catch (Exception ex) { //TODO : Log exception throw ex; } } }
public void Publish(Message pMessage) { Console.WriteLine("Publish queue-------- Topic: " + pMessage.Topic); String topic = pMessage.Topic; String forwardAddress = ""; if (topic == "bank") { forwardAddress = "bank"; } if (topic == "transfer") { TransferMessage transferMessage = pMessage as TransferMessage; bool bTransferResult = transferMessage.BTransfer; if (bTransferResult) { forwardAddress = "delivery"; } else { forwardAddress = "email"; } } if (topic == "delivery") { forwardAddress = "email"; } if (topic == "videostore") { } foreach (String lHandlerAddress in SubscriptionRegistry.Instance.GetTopicSubscribers(forwardAddress)) { ISubscriberService lSubServ = ServiceFactory.GetService <ISubscriberService>(lHandlerAddress); Console.WriteLine("Handler Address:" + lHandlerAddress); lSubServ.PublishToSubscriber(pMessage); } }
public Task <List <TransactionMetadata> > TransferAsync(Transfer transfer, Wallet wallet, TransactionOption options, bool sync = true) { TransactionMessage message = new TransferMessage(transfer, wallet, options); return(BroadcastAsync(message.BuildMessageBody())); }
private static TransferMessage ServerRequestResult(TransferMessage msg) { // find the queue entry for the message and return the result foreach(QueuedMessage q in ServerRequests) { if(q.MessageIn == msg) return q.MessageOut; } return null; }
public QueuedMessage(TransferMessage msg) { MessageIn = msg; Completed = false; }
private static void RemoveRequest(TransferMessage msg) { // search the queue to see if the message is still being processed foreach(QueuedMessage q in ServerRequests) { if(q.MessageIn == msg ) { q.Remove = true; break; } } }
private static bool ServerRequestProcessed(TransferMessage msg) { // search the queue to see if the message is still being processed foreach(QueuedMessage q in ServerRequests) { if(q.MessageIn == msg && !q.Completed) return false; } // return true if the message is no longer on the queue or it there and has been completed return true; }
private static string Authenticate(TransferMessage msg) { if(msg == null) { // unknown error return "Empty message"; } // check to make sure that an authentication entry for this message is on the authentication list ArrayList removelist = new ArrayList(); // default no authentication status string errorstatus = "Renew your Session Authentication"; foreach(AuthEntry a in AuthList) { // check for entry expiration if(a.Timestamp < DateTime.Now - AuthenticationLifetime) { removelist.Add(a); continue; } // confirm authentication id match and accesslevel if(a.AuthenticationID == msg.AuthenticationID) { // confirm required accesslevel on the msg is below the access level of the auth entry if(a.Level < GetAccessLevel(msg)) { // authenticated but insufficient access errorstatus = "Insufficient Access Level"; } else { // authenticated and access confirmed errorstatus = null; } } } // clean up the list foreach(AuthEntry a in removelist) { AuthList.Remove(a); } return errorstatus; }
private static AccessLevel GetAccessLevel(TransferMessage msg) { // default accesslevel is admin AccessLevel level = AccessLevel.Administrator; MethodInfo minfo = msg.GetType().GetMethod("ProcessMessage"); object [] attr = minfo.GetCustomAttributes(typeof(TransferAccess), false); if(attr != null) { for(int i=0;i<attr.Length;i++) { if(((TransferAccess)attr[i]).Level < level) { level = ((TransferAccess)attr[i]).Level; } } } return level; }
public void SignDataTest() { InputOutput input = new InputOutput { Address = "tbnb18086qc9yxtk5ufddple8upf0k3072vvagpm2ml", Coins = new List <Token> { new Token { Denom = "PND-943", Amount = 100000000 } } }; InputOutput output = new InputOutput { Address = "tbnb18086qc9yxtk5ufddple8upf0k3072vvagpm2ml", Coins = new List <Token> { new Token { Denom = "PND-943", Amount = 100000000 } } }; TransferMessage transferMessage = new TransferMessage { Inputs = new List <InputOutput> { input }, Outputs = new List <InputOutput> { output } }; SignData signData = new SignData { ChainId = "Binance-Chain-Nile", AccountNumber = "667519", Sequence = "0", Memo = "", Msgs = new TransferMessage[] { transferMessage }, Source = "3", Data = null }; //JsonSerializer serializer = new JsonSerializer(); string json = JsonConvert.SerializeObject(signData); // bytes = [123, 34, 97, 99, 99, 111, 117, 110, 116, 95, 110, 117, 109, 98, 101, 114, 34, 58, 34, 54, 54, 55, 53, 49, 57, 34, 44, 34, 99, 104, 97, 105, 110, 95, 105, 100, 34, 58, 34, 66, 105, 110, 97, 110, 99, 101, 45, 67, 104, 97, 105, 110, 45, 78, 105, 108, 101, 34, 44, 34, 100, 97, 116, 97, 34, 58, 110, 117, 108, 108, 44, 34, 109, 101, 109, 111, 34, 58, 34, 34, 44, 34, 109, 115, 103, 115, 34, 58, 91, 123, 34, 105, 110, 112, 117, 116, 115, 34, 58, 91, 123, 34, 97, 100, 100, 114, 101, 115, 115, 34, 58, 34, 116, 98, 110, 98, 49, 56, 48, 56, 54, 113, 99, 57, 121, 120, 116, 107, 53, 117, 102, 100, 100, 112, 108, 101, 56, 117, 112, 102, 48, 107, 51, 48, 55, 50, 118, 118, 97, 103, 112, 109, 50, 109, 108, 34, 44, 34, 99, 111, 105, 110, 115, 34, 58, 91, 123, 34, 97, 109, 111, 117, 110, 116, 34, 58, 49, 48, 48, 48, 48, 48, 48, 48, 48, 44, 34, 100, 101, 110, 111, 109, 34, 58, 34, 80, 78, 68, 45, 57, 52, 51, 34, 125, 93, 125, 93, 44, 34, 111, 117, 116, 112, 117, 116, 115, 34, 58, 91, 123, 34, 97, 100, 100, 114, 101, 115, 115, 34, 58, 34, 116, 98, 110, 98, 49, 56, 48, 56, 54, 113, 99, 57, 121, 120, 116, 107, 53, 117, 102, 100, 100, 112, 108, 101, 56, 117, 112, 102, 48, 107, 51, 48, 55, 50, 118, 118, 97, 103, 112, 109, 50, 109, 108, 34, 44, 34, 99, 111, 105, 110, 115, 34, 58, 91, 123, 34, 97, 109, 111, 117, 110, 116, 34, 58, 49, 48, 48, 48, 48, 48, 48, 48, 48, 44, 34, 100, 101, 110, 111, 109, 34, 58, 34, 80, 78, 68, 45, 57, 52, 51, 34, 125, 93, 125, 93, 125, 93, 44, 34, 115, 101, 113, 117, 101, 110, 99, 101, 34, 58, 34, 48, 34, 44, 34, 115, 111, 117, 114, 99, 101, 34, 58, 34, 51, 34, 125] byte[] bytes = Encoding.UTF8.GetBytes(json); byte[] hash; using (SHA256 sha256 = SHA256.Create()) { // hash = [-124, 96, -11, -122, -27, -7, 103, -38, -29, 0, -34, 45, 98, -83, 32, 16, -11, 108, -8, -88, -66, -80, 106, 14, -13, 34, -115, 99, -94, -124, -101, -117] hash = sha256.ComputeHash(bytes); } Wallet wallet = Wallet.FromPrivateKey("f0e87ed55fa3d86f62b38b405cbb5f732764a7d5bc690da45a32aa3f2fc81a36", BinanceDexEnvironment.TEST_NET); //string resultB = wallet.EcKey.SignMessage(bytes); //string resultS = wallet.EcKey.SignMessage(json); uint256 hash256 = Hashes.Hash256(bytes); uint256 uint256 = new uint256(hash, false); uint256 uint256le = new uint256(hash, true); //uint256 uint256 = new uint256("8460f586e5f967dae300de2d62ad2010f56cf8a8beb06a0ef3228d63a2849b8b"); // message for GenerateSignature [-124, 96, -11, -122, -27, -7, 103, -38, -29, 0, -34, 45, 98, -83, 32, 16, -11, 108, -8, -88, -66, -80, 106, 14, -13, 34, -115, 99, -94, -124, -101, -117] ECDSASignature signature = wallet.EcKey.Sign(uint256le, false); byte[] signatureBytes = new byte[64]; signature.R.ToByteArrayUnsigned().CopyTo(signatureBytes, 0); signature.S.ToByteArrayUnsigned().CopyTo(signatureBytes, 32); // r = 61420091277463284201584464261002339752469911249959494312431854777400008021097 // s = 9337502753576151745268672761590576963567913315001541648793269425462248583710 // signature result = [-121, -54, -118, 43, 107, -25, 50, -112, -101, 34, -63, -121, -111, -90, 109, -72, -95, -42, 55, -87, -108, -42, -21, -99, -2, -74, 13, -106, 99, -34, -108, 105, 20, -92, -42, -38, 116, -51, 15, 44, -17, -29, -119, -53, -119, -51, 58, -48, -38, -92, 39, -99, -64, 119, -81, 112, -97, -103, 112, -91, -71, -119, -78, 30] //byte[] resultBytes = Encoders.Base64.DecodeData(resultB); }
private static void AddRequest(TransferMessage msg) { ServerRequests.Add(new QueuedMessage(msg)); }
public void TransferMessage(TransferMessage ebcMessage) { // If there was a message through the WCF channel, inform the "environment". this.OnOut_MessageTransfered(ebcMessage.EBCMessageData); }
private static TransferMessage CallInboundWcfService(string activeEndPointName, TransferMessage canonicalMessage, string adapterName, string userName, string password, string domain) { var recvAdapterChannelFactory = new ChannelFactory <IInboundService>(activeEndPointName); // step one - find and remove default endpoint behavior var defaultCredentials = recvAdapterChannelFactory.Endpoint.Behaviors.Find <ClientCredentials>(); recvAdapterChannelFactory.Endpoint.Behaviors.Remove(defaultCredentials); // step two - instantiate your credentials ClientCredentials loginCredentials = new ClientCredentials(); loginCredentials.Windows.ClientCredential.UserName = userName; loginCredentials.Windows.ClientCredential.Password = password; //loginCredentials.UserName.UserName = userName; //loginCredentials.UserName.Password = password; if (!string.IsNullOrEmpty(domain)) { loginCredentials.Windows.ClientCredential.Domain = domain; } // step three - set that as new endpoint behavior on factory recvAdapterChannelFactory.Endpoint.Behaviors.Add(loginCredentials); //add required ones // Create a channel. var wcfClient = recvAdapterChannelFactory.CreateChannel(); // send the message to the adapter var transferMessage = wcfClient.ProcessTransferMessage(canonicalMessage, adapterName); ((IClientChannel)wcfClient).Close(); return(transferMessage); }
/// <summary> /// Call Receive Adapter Service with existing Channel Factory /// </summary> /// <param name="channelFactory"></param> /// <param name="transferMessage"></param> public static void CallReceiveAdapterWcfService(ChannelFactory <IReceiveAdapter> channelFactory, TransferMessage transferMessage) { var wcfClient = channelFactory.CreateChannel(); wcfClient.ProcessMessage(transferMessage); ((IClientChannel)wcfClient).Close(); }
/// <summary> /// TODO : Fill this /// </summary> public void PushMessages() { //Get messages to push them List <MessageEnriched> messagesEnriched = new List <MessageEnriched>(); //If there are waiting messages var waitingListReTryList = _waitingList.Where(x => x.Item2 < DateTime.Now).ToList(); if (waitingListReTryList.Any()) { //Add wating list messagesEnriched.AddRange(waitingListReTryList.Select(x => x.Item1).ToList()); } //Add more until limit //Check if waiting list reached to the limit, then dont take from DB int messageCountToTakeFromDB = _waitingList.Count >= _waitingListLimit ? 0 : (_messageLimitToBeDispatched - waitingListReTryList.Count() > 0 ? _messageLimitToBeDispatched - waitingListReTryList.Count() : 0); var messagesToBeDispatched = MessageStorage.GetMessagesToBeDispatched(messageCountToTakeFromDB, waitingListReTryList.Count()); messagesEnriched.AddRange(messagesToBeDispatched); //Group messages by receive adapter var messagesGrouped = messagesEnriched.GroupBy(x => x.ReceiveAdapterId).ToList(); foreach (var subMessages in messagesGrouped) { var receiveAdapterId = subMessages.FirstOrDefault().ReceiveAdapterId; var receiveAdapter = _receiveAdaptersWithDetails.FirstOrDefault(x => x.Id == receiveAdapterId); if (receiveAdapter == null) { continue; } //Receive adapter url var uri = receiveAdapter.ReceiveAdapterDetails.AdapterServiceURI; //Create channel factory for this receive adapter var channelFactory = Connected.Common.ClientWCFServiceInvokerUtil.CreateReceiveAdapterServiceChannelFactory(uri); //Send messages foreach (var messageEnriched in subMessages) { int timestoRetry = receiveAdapter.ReceiveAdapterDetails.TimesToRetry ?? 0; int retryInterval = receiveAdapter.ReceiveAdapterDetails.RetryInterval ?? 0; try { TransferMessage transferMessages = new TransferMessage() { Header = new TransferMessageHeader() { Destination = "Receive Adapter", MessageType = "Pushed Message", Source = "Dispatcher", Status = "From Dispatcher", TimeStamp = DateTime.Now.ToString() }, Body = SerializationHelper.SerializeObjectToXml <string>(messageEnriched.Message).DocumentElement }; Connected.Common.ClientWCFServiceInvokerUtil.CallReceiveAdapterWcfService(channelFactory, transferMessages); //Delete if succesfully sent MessageStorage.RemoveMessagesDispatcher(messageEnriched.Id); } catch (Exception) { //TODO : Log message var waitingMessage = _waitingList.FirstOrDefault(x => x.Item1.Id == messageEnriched.Id); if (waitingMessage != null) { if (waitingMessage.Item3 >= receiveAdapter.ReceiveAdapterDetails.TimesToRetry) { //TODO : Send message back to inbound service as failed message //TODO : remove from dispatcher topic //Remove from waiting list _waitingList.Remove(waitingMessage); } else { //TODO : Find a better solution to update Tuple _waitingList.Remove(waitingMessage); _waitingList.Add(new Tuple <MessageEnriched, DateTime, int>( waitingMessage.Item1, DateTime.Now.AddMilliseconds(receiveAdapter.ReceiveAdapterDetails.RetryInterval ?? 0), waitingMessage.Item3 + 1)); } } else { //If re try is 0 if (receiveAdapter.ReceiveAdapterDetails.TimesToRetry == 0) { //TODO : Send message back to inbound service as failed message //TODO : remove from dispatcher topic //Remove from waiting list _waitingList.Remove(waitingMessage); } //Add to waiting list else { _waitingList.Add( new Tuple <MessageEnriched, DateTime, int>( messageEnriched, DateTime.Now.AddMilliseconds(receiveAdapter.ReceiveAdapterDetails.RetryInterval ?? 0), 1)); } } } } //Close channel factory channelFactory.Close(); } }
//TODO : Cache or make static the channelFactory /// <summary> /// This method will call a WCF Service that implements the IInboundService Contract /// </summary> /// <param name="activeEndPointName">End point name</param> /// <param name="transferMessage">The message that needs to be submitted</param> /// <param name="adapterName"> the name of the adapter that is sending the message back into connect</param> public static TransferMessage CallInboundWcfService(string activeEndPointName, TransferMessage transferMessage, string adapterName) { var recvAdapterChannelFactory = new ChannelFactory <IInboundService>(activeEndPointName); // Create a channel. var wcfClient = recvAdapterChannelFactory.CreateChannel(); // send the message to the adapter var response = wcfClient.ProcessTransferMessage(transferMessage, adapterName); ((IClientChannel)wcfClient).Close(); return(response); }