private void ReceiveCallBack(IAsyncResult ar)
        {
            Settings            settings    = ar.AsyncState as Settings;
            TransactionProtocol transaction = ar.AsyncState as TransactionProtocol;

            try
            {
                SocketError response;
                int         buffsize = _socket.EndReceive(ar, out response);
                if (response == SocketError.Success)
                {
                    byte[] payloadbytes = new byte[buffsize];
                    Array.Copy(settings.Buffer, payloadbytes, payloadbytes.Length);

                    PayloadHandler.Handle(payloadbytes, settings);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine($"Can't receive data from Queue Server {e.Message}");
            }
            finally
            {
                try
                {
                    settings.Socket.BeginReceive(settings.Buffer, 0, settings.Buffer.Length, SocketFlags.None, ReceiveCallBack, transaction);
                }
                catch (Exception e)
                {
                    Console.WriteLine($"{e.Message}");
                    settings.Socket.Close();
                }
            }
        }
        internal void ErrorHandler(TransactionProtocol message, ConnectionParam connection)
        {
            message.Type_message = API_Transaction.Enums.TypeMessage.error;
            var byte_message = ConvertToByteArray(message);

            connection.Socket.Send(byte_message);
        }
        private static void Write(TransactionProtocol data, TransactionData transaction)
        {
            Console.WriteLine("\n\n" + data.Sender_id + " add to " + data.Request_id + " at " + data.Timestamp);

            Console.WriteLine("Owner: " + transaction.Owner_card_id + "\nReceiver: " + transaction.Recipient_card_id + "\nTransaction: " + transaction.transactionType
                              + "\nCcy: " + transaction.Ccy + "\nSum: " + transaction.Transaction_summ);
        }
Exemple #4
0
        public void RouteRequests(ConnectionParam connection)
        {
            var request = Encoding.UTF8.GetString(connection.Context);

            TransactionProtocol message = JsonConvert.DeserializeObject <TransactionProtocol>(request);

            if (message.Type_message == TypeMessage.add)
            {
                AddHandler(message, connection);
            }
            else
            if (message.Type_message == TypeMessage.give)
            {
                GiveHandler(message, connection);
            }
            else
            if (message.Type_message == TypeMessage.response)
            {
                ResponseHandler(message, connection);
            }
            else
            {
                ErrorHandler(message, connection);
            }
        }
        public bool TxOperation()
        {
            NetTcpBinding       tcp = (NetTcpBinding)OperationContext.Current.Host.Description.Endpoints[0].Binding;
            TransactionProtocol pro = tcp.TransactionProtocol;


            WSHttpBinding ws = (WSHttpBinding)OperationContext.Current.Host.Description.Endpoints[1].Binding;


            TransactionInformation info = Transaction.Current.TransactionInformation;
            string localId       = String.Empty;
            Guid   distributedId = Guid.Empty;

            localId       = info.LocalIdentifier;
            distributedId = info.DistributedIdentifier;
            DBOperation1();

            localId       = info.LocalIdentifier;
            distributedId = info.DistributedIdentifier;

            DBOperation2();

            localId       = info.LocalIdentifier;
            distributedId = info.DistributedIdentifier;

            return(true);
        }
Exemple #6
0
        public static void WriteTransactionDataToMessage(TransactionProtocol protocol, string fileName)
        {
            object transactionFormatter = null;

            if (protocol == TransactionProtocol.OleTransactions)
            {
                transactionFormatter = RefUtil.CreateInstance <object>(OleTxTransactionFormatter);
            }
            else if (protocol == TransactionProtocol.WSAtomicTransactionOctober2004)
            {
                transactionFormatter = RefUtil.CreateInstance <object>(WsatTransactionFormatter10);
            }
            else
            {
                transactionFormatter = RefUtil.CreateInstance <object>(WsatTransactionFormatter11);
            }

            Type    type    = Type.GetType(TransactionFormatter);
            Message message = Message.CreateMessage(MessageVersion.Default, "http://www.artech.com/writetransaction", Transaction.Current);

            RefUtil.Invoke(type, "WriteTransaction", transactionFormatter, new object[] { Transaction.Current, message });
            using (XmlWriter writer = new XmlTextWriter(fileName, Encoding.UTF8))
            {
                message.WriteMessage(writer);
            }
            Process.Start(fileName);
        }
        public static void Handle(byte[] transactionbytes, Settings settings)
        {
            var transactionstring = Encoding.UTF8.GetString(transactionbytes);
            var data        = JsonConvert.DeserializeObject <TransactionProtocol>(transactionstring);
            var transaction = JsonConvert.DeserializeObject <TransactionData>(data.Transaction);

            if (string.IsNullOrWhiteSpace(data.Request_id) || string.IsNullOrWhiteSpace(data.Sender_id) ||
                string.IsNullOrWhiteSpace(data.Transaction))
            {
                data.Type_message = Enums.MessageType.error;
                data.Transaction  = null;
                data.Message      = $"Error! Transaction from {data.Sender_id} to {data.Request_id} at {data.Timestamp} was unsuccessful.";
                var byte_message = ConvertToBytes(data);
                settings.Socket.Send(byte_message);
            }
            else
            {
                var to_send = new TransactionProtocol();

                to_send.Type_message = Enums.MessageType.response;
                to_send.Transaction  = null;
                to_send.Message      = $"Successful! Transaction from {data.Sender_id} to {data.Request_id} at {data.Timestamp} was successful.";
                to_send.Timestamp    = DateTime.Now;
                var byte_message = ConvertToBytes(to_send);
                settings.Socket.Send(byte_message);
                Write(data, transaction);
            }
        }
        private byte[] ConvertToByteArray(TransactionProtocol message)
        {
            var transact_format = JsonConvert.SerializeObject(message);
            var byte_array      = UTF8Encoding.UTF8.GetBytes(transact_format);

            return(byte_array);
        }
Exemple #9
0
 public static SecurityStandardsManager CreateStandardsManager(TransactionProtocol transactionProtocol)
 {
     if ((transactionProtocol != TransactionProtocol.WSAtomicTransactionOctober2004) && (transactionProtocol != TransactionProtocol.OleTransactions))
     {
         return(SecurityStandardsManager2007);
     }
     return(SecurityStandardsManager.DefaultInstance);
 }
Exemple #10
0
 public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType)
 {
     if (typeof(string) == destinationType && value is TransactionProtocol)
     {
         TransactionProtocol protocol = (TransactionProtocol)value;
         return(protocol.Name);
     }
     return(base.ConvertTo(context, culture, value, destinationType));
 }
Exemple #11
0
        public TransactionChannelListener(TransactionProtocol transactionProtocol, IDefaultCommunicationTimeouts timeouts, Dictionary <DirectionalAction, TransactionFlowOption> dictionary, IChannelListener <TChannel> innerListener)
            : base(timeouts, innerListener)
        {
            this.dictionary          = dictionary;
            this.TransactionProtocol = transactionProtocol;
            this.Acceptor            = new TransactionChannelAcceptor(this, innerListener);

            this.standardsManager = SecurityStandardsHelper.CreateStandardsManager(this.TransactionProtocol);
        }
        private void Subscribe()
        {
            TransactionProtocol transaction = new TransactionProtocol();

            transaction.Type_message = MessageType.give;

            var data = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(transaction));

            Send(data);
        }
        internal void GiveHandler(TransactionProtocol message, ConnectionParam connection)
        {
            if (string.IsNullOrWhiteSpace(message.Transaction) == false)
            {
                ErrorHandler(message, connection);
            }
            var task   = RequestStorage.GetInstance().GetTransaction();
            var buffer = ConvertToByteArray(task);

            connection.Socket.Send(buffer);
        }
Exemple #14
0
        private static void WriteTransaction(TransactionProtocol transactionProtocol, Transaction transaction, string fileName)
        {
            string  action  = string.Format("http://www.lhl.com/transactionformat/{0}", transactionProtocol.GetType().Name);
            Message message = Message.CreateMessage(MessageVersion.Default, action, Transaction.Current);
            TransactionFormatter formatter = new TransactionFormatter(transactionProtocol);

            formatter.WriteTransaction(Transaction.Current, message);
            using  (XmlWriter writer = new XmlTextWriter(fileName, Encoding.UTF8)) {
                message.WriteMessage(writer);
            }
        }
        public TransactionProtocol GetTransaction()
        {
            TransactionProtocol transaction = new TransactionProtocol();
            var status = false;

            while (!status)
            {
                status = transactions.TryDequeue(out transaction);
            }
            return(transaction);
        }
Exemple #16
0
        protected void AddTransactionFlowBindingElement(BindingElementCollection bindingElements)
        {
            TransactionProtocol           transactionProtocol = (this.protocolVersion == ProtocolVersion.Version10) ? TransactionProtocol.WSAtomicTransactionOctober2004 : TransactionProtocol.WSAtomicTransaction11;
            TransactionFlowBindingElement item = new TransactionFlowBindingElement(transactionProtocol)
            {
                Transactions = false,
                IssuedTokens = TransactionFlowOption.Allowed
            };

            bindingElements.Add(item);
        }
        internal TransactionFlowBindingElement(bool transactions, TransactionProtocol transactionProtocol)
        {
            _transactions = transactions;
            _issuedTokens = transactions ? TransactionFlowOption.Allowed : TransactionFlowOption.NotAllowed;

            if (!TransactionProtocol.IsDefined(transactionProtocol))
            {
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgument(string.Format(SRServiceModel.ConfigInvalidTransactionFlowProtocolValue, transactionProtocol.ToString()));
            }

            _transactionProtocol = transactionProtocol;
        }
        internal TransactionFlowBindingElement(bool transactions, TransactionProtocol transactionProtocol)
        {
            this.transactions = transactions;
            this.issuedTokens = transactions ? TransactionFlowOption.Allowed : TransactionFlowOption.NotAllowed;

            if (!TransactionProtocol.IsDefined(transactionProtocol))
            {
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgument(SR.GetString(SR.ConfigInvalidTransactionFlowProtocolValue, transactionProtocol.ToString()));
            }

            this.transactionProtocol = transactionProtocol;
        }
 private static void TrackAgreementTransactionProtocol(ref bool everyoneAgrees, TransactionProtocol option, ref TransactionProtocol agreedOption, ref bool anOperationCares)
 {
     if (!anOperationCares)
     {
         agreedOption     = option;
         anOperationCares = true;
     }
     else if (option != agreedOption)
     {
         everyoneAgrees = false;
     }
 }
 public void AddTransaction(TransactionProtocol protocol)
 {
     transactions.Enqueue(protocol);
     lock (_lock)
     {
         if (timestamp < DateTime.Now)
         {
             LoadStorage();
             timestamp = DateTime.Now.AddMinutes(1);
         }
     }
 }
Exemple #21
0
 public static SecurityStandardsManager CreateStandardsManager(TransactionProtocol transactionProtocol)
 {
     if (transactionProtocol == TransactionProtocol.WSAtomicTransactionOctober2004 ||
         transactionProtocol == TransactionProtocol.OleTransactions)
     {
         return(SecurityStandardsManager.DefaultInstance);
     }
     else
     {
         return(SecurityStandardsHelper.SecurityStandardsManager2007);
     }
 }
Exemple #22
0
 public TransactionChannelFactory(
     TransactionProtocol transactionProtocol,
     BindingContext context,
     Dictionary <DirectionalAction, TransactionFlowOption> dictionary,
     bool allowWildcardAction)
     : base(context.Binding, context.BuildInnerChannelFactory <TChannel>())
 {
     this.dictionary          = dictionary;
     this.TransactionProtocol = transactionProtocol;
     this.allowWildcardAction = allowWildcardAction;
     this.standardsManager    = SecurityStandardsHelper.CreateStandardsManager(this.TransactionProtocol);
 }
        TransactionFlowBindingElement(TransactionFlowBindingElement elementToBeCloned)
            : base(elementToBeCloned)
        {
            this.transactions = elementToBeCloned.transactions;
            this.issuedTokens = elementToBeCloned.issuedTokens;

            if (!TransactionProtocol.IsDefined(elementToBeCloned.transactionProtocol))
            {
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgument(SR.GetString(SR.ConfigInvalidTransactionFlowProtocolValue, elementToBeCloned.transactionProtocol.ToString()));
            }

            this.transactionProtocol = elementToBeCloned.transactionProtocol;
            this.AllowWildcardAction = elementToBeCloned.AllowWildcardAction;
        }
        private TransactionFlowBindingElement(TransactionFlowBindingElement elementToBeCloned)
            : base(elementToBeCloned)
        {
            _transactions = elementToBeCloned._transactions;
            _issuedTokens = elementToBeCloned._issuedTokens;

            if (!TransactionProtocol.IsDefined(elementToBeCloned._transactionProtocol))
            {
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgument(string.Format(SRServiceModel.ConfigInvalidTransactionFlowProtocolValue, elementToBeCloned._transactionProtocol.ToString()));
            }

            _transactionProtocol     = elementToBeCloned._transactionProtocol;
            this.AllowWildcardAction = elementToBeCloned.AllowWildcardAction;
        }
        static void Main(string[] args)
        {
            var    random = new Random();
            string typemessage, transactiontype;

            Console.WriteLine("Sender is ON!");
            var socket = new SocketSender();

            socket.Connect(Settings.ipAddress, Settings.port);

            if (socket.IsConnected)
            {
                var data        = new TransactionProtocol();
                var transaction = new TransactionData();
                data.Sender_id  = "1";
                data.Request_id = random.Next().ToString();
                data.Timestamp  = DateTime.Now;
                Console.WriteLine("\n\t-----Hello! Please enter details for transaction-----\n");
                //-----MessageType-----
                Console.Write("Type of action \n \tGive = 1 \n \tResponse = 2 \n \tAdd = 3 \n Option:");
                typemessage       = Console.ReadLine();
                data.Type_message = (MessageType)Enum.Parse(typeof(MessageType), typemessage);
                //---------------------
                Console.Write("Enter owner card id: ");
                transaction.Owner_card_id = Console.ReadLine();

                Console.Write("Enter receiver card id:  ");
                transaction.Recipient_card_id = Console.ReadLine();
                //-----TransactionType-----
                Console.Write("Enter transaction type: ");
                transactiontype             = Console.ReadLine();
                transaction.transactionType = (TransactionType)Enum.Parse(typeof(TransactionType), transactiontype);
                //---------------------
                Console.Write("Enter currency: ");
                transaction.Ccy = Console.ReadLine();

                Console.Write("Enter transaction sum: ");
                transaction.Transaction_summ = Convert.ToInt32(Console.ReadLine());

                Console.Write("Enter aditional comment: ");
                transaction.Aditional_comment = Console.ReadLine();

                data.Transaction = JsonConvert.SerializeObject(transaction);
                var    dataserial = JsonConvert.SerializeObject(data);
                byte[] databyte   = Encoding.UTF8.GetBytes(dataserial);
                socket.Send(databyte);
            }
            Console.ReadLine();
        }
Exemple #26
0
 public TransactionFormatter(TransactionProtocol transactionProtocol)
 {
     if (transactionProtocol == TransactionProtocol.OleTransactions)
     {
         this.InternalFormatter = ReflectUtil.CreateInstance(OleTxFormatterType);
     }
     else if (transactionProtocol == TransactionProtocol.WSAtomicTransactionOctober2004)
     {
         this.InternalFormatter = ReflectUtil.CreateInstance(Wsat10FormatterType);
     }
     else
     {
         this.InternalFormatter = ReflectUtil.CreateInstance(Wsat11FormatterType);
     }
 }
        internal void AddHandler(TransactionProtocol message, ConnectionParam connection)
        {
            if (string.IsNullOrWhiteSpace(message.Request_id) || string.IsNullOrWhiteSpace(message.Sender_id) ||
                string.IsNullOrWhiteSpace(message.Transaction))
            {
                ErrorHandler(message, connection);
                return;
            }
            var request_storage = RequestStorage.GetInstance();

            request_storage.AddTransaction(message);
            var connection_storage = ConnectionStorage.GetInstance();

            connection_storage.AddConnection(connection, message.Request_id);
        }
        private void LoadStorage()
        {
            string storage_path = Config.STORAGE_PATH;
            string storage_name = Config.STORAGE_NAME;
            string path_comb    = Path.Combine(storage_name, storage_path);

            using (Stream stream = File.Open(path_comb, FileMode.Create))
            {
                var formater = new BinaryFormatter();

                TransactionProtocol[] transact_array = new TransactionProtocol[transactions.Count];
                transactions.CopyTo(transact_array, 0);
                var list_transact = transact_array.OfType <TransactionProtocol>().ToList();
                formater.Serialize(stream, list_transact);
            }
        }
 static void TrackAgreementTransactionProtocol(ref bool everyoneAgrees, TransactionProtocol option,
                                               ref TransactionProtocol agreedOption, ref bool anOperationCares)
 {
     if (!anOperationCares)
     {
         // this is the first operation to express a preference
         agreedOption     = option;
         anOperationCares = true;
         // everyoneAgrees is still true
     }
     else
     {
         if (option != agreedOption)
         {
             everyoneAgrees = false;
         }
     }
 }
Exemple #30
0
        internal void ResponseHandler(TransactionProtocol message, ConnectionParam connection)
        {
            if (string.IsNullOrWhiteSpace(message.Request_id) || string.IsNullOrWhiteSpace(message.Sender_id) ||
                string.IsNullOrWhiteSpace(message.Message))
            {
                ErrorHandler(message, connection);
                return;
            }
            var sender_connection = ConnectionStorage.GetInstance().GetConnection(message.Request_id);

            if (sender_connection is null)
            {
                ErrorHandler(message, connection);
                return;
            }
            var message_buffer = ConvertToByteArray(message);

            sender_connection.Socket.Send(message_buffer);
        }