예제 #1
0
 private static void parseQuery(string querytype, IEnumerator<XElement> x, ref Message msg1, Sender sndr)
 {
     Message msg = new Message();
       msg.fromUrl = msg1.fromUrl;
       msg.toUrl = msg1.toUrl;
       msg.content = msg1.content.ToString();
       switch (querytype)
       {
     case "Search Key-Value":
       search_key_value(x, ref msg, sndr);
       break;
     case "Search Children":
       search_children(x, ref msg, sndr);
       break;
     case "Pattern Matching":
       pattern_matching(x, ref msg, sndr);
       break;
     case "String in Metadata":
       string_metadata(x, ref msg, sndr);
       break;
     case "Time-Date Interval":
       time_date_interval(x, ref msg, sndr);
       break;
     case "Restore":
       restore_database(x, ref msg, sndr);
       break;
       }
 }
예제 #2
0
 public void parse(XDocument newDoc, ref Message msg, Sender sndr)
 {
     Console.WriteLine(newDoc.ToString());
       Console.WriteLine();
       var root = newDoc.Root.Elements("DB");
       foreach (XElement Root in root)
       {
     string keytype, payloadtype = "";
     keytype = Root.Element("KeyType").Value.ToString();
     payloadtype = Root.Element("PayloadType").Value.ToString();
     msg.content = "keytype," + keytype + ",payloadtype," + payloadtype;
     Console.WriteLine("\n" + msg.content);
     var query = Root.Elements("Query");
     IEnumerator<XElement> x = query.GetEnumerator();
     string message = new String(msg.content.ToCharArray());
     while (x.MoveNext())
     {
       msg.content += ",query,";
       string querytype = "";
       querytype = x.Current.Element("QueryType").Value.ToString();
       msg.content += "querytype," + querytype;
       parseQuery(querytype, x, ref msg, sndr);
       msg.content = message;
     }
       }
 }
예제 #3
0
 public Message makeMessage(string fromUrl, string toUrl)
 {
   Message msg = new Message();
   msg.fromUrl = fromUrl;
   msg.toUrl = toUrl;
   msg.content = String.Format("\n  message #{0}", ++msgCount);
   return msg;
 }
예제 #4
0
 //--------------custom message creation for every request-------------//
 public Message makeMessage(string fromUrl, string toUrl, XElement request)
 {
     Message msg = new Message();
     msg.fromUrl = fromUrl;
     msg.toUrl = toUrl;
     msg.content = request.ToString();
     return msg;
 }
예제 #5
0
 public Message makeMessage(string fromUrl, string toUrl)
 {
     XDocument xmlDoc = XDocument.Load("C:\\Users\\rakeshh91\\Desktop\\WriterClientInput.xml");
     Message msg = new Message();
     msg.fromUrl = fromUrl;
     msg.toUrl = toUrl;
     //msg.content = String.Format("\n  message #{0}", ++msgCount);
     msg.content = xmlDoc.ToString();
     return msg;
 }
 //---------< add data according to query to message >-------------
 private void time_Date_Interval(ref Message msg)
 {
     DateTime date = new DateTime();
       if (S_Date_Value.Text != "Timestamp (MM/DD/YYYY HH:MM:SS AM/PM)" && S_Date_Value.Text != null && DateTime.TryParse(S_Date_Value.Text, out date))
       {
     msg.content += "sdate-time," + date.ToString() + ",";
     if (E_Date_Value.Text == "Timestamp (MM/DD/YYYY HH:MM:SS AM/PM)")
     {
       msg.content += "edate-time,";
       if (sndr.sendMessage(msg))
       {
     Result_Box.Items.Insert(0, "Sending Message: " + msg.content);
       }
       else
       {
     Result_Box.Items.Insert(0, "Not able to send Message");
       }
     }
     else if (E_Date_Value.Text != "Timestamp (MM/DD/YYYY HH:MM:SS AM/PM)" && DateTime.TryParse(E_Date_Value.Text, out date))
     {
       msg.content += "edate-time," + date.ToString() + ",";
       if (sndr.sendMessage(msg))
       {
     Result_Box.Items.Insert(0, "Sending Message: " + msg.content);
       }
       else
       {
     Result_Box.Items.Insert(0, "Not able to send Message");
       }
     }
     else
     {
       Result_Box.Items.Insert(0, "Not a Valid Date");
       return;
     }
       }
       else
       {
     Result_Box.Items.Insert(0, "Not a Valid Date");
     return;
       }
 }
예제 #7
0
    static void Main(string[] args)
    {
try
        {
            HiResTimer hres = new HiResTimer(); //High Resolution Timer
            Console.Write("\nStarting CommService write client");
            Console.Write("\n =============================\n");
            Console.Title = "Write Client";
            Message msg = new Message();
            WriterClient clnt = new WriterClient();
            clnt.processCommandLine(args);
            string localPort = Util.urlPort(clnt.localUrl);
            string localAddr = Util.urlAddress(clnt.localUrl);
            Receiver rcvr = new Receiver(localPort, localAddr);
            Action serviceAction = DefineServiceAction(hres, clnt, rcvr);
            if (rcvr.StartService())
                rcvr.doService(serviceAction);
            Sender sndr = new Sender(clnt.localUrl);  // Sender needs localUrl for start message         
            msg.fromUrl = clnt.localUrl;
            msg.toUrl = clnt.remoteUrl;
            Console.Write("Sender's url is {0}", msg.fromUrl);
            Console.Write("Attempting to connect to {0}\n", msg.toUrl);
            if (!sndr.Connect(msg.toUrl))
            {
                Console.Write("Could not connect in {0} attempts\n", sndr.MaxConnectAttempts);
                sndr.shutdown();
                rcvr.shutDown();
                return;
            }
            PerformanceTesting(hres, msg, clnt, rcvr, sndr);
        }
        catch (CustomException ex)
        {
            throw new CustomException("Error in main of writer client", ex);
        }
    }
예제 #8
0
        //----< send closeSender message to local sender >-------------------

        public void shutdown()
        {
            Message sdmsg = new Message();
            sdmsg.fromUrl = localUrl;
            sdmsg.toUrl = localUrl;
            sdmsg.content = "closeSender";
            Console.Write("\n  shutting down local sender");
            sendMessage(sdmsg);
        }
예제 #9
0
        //----< send closeReceiver message to local Receiver >---------------

        public void shutDown()
        {
            Console.Write("\n  Local receiver shutting down");
            Message msg = new Message();
            msg.content = "closeReceiver";
            msg.toUrl = Util.makeUrl(address, port);
            msg.fromUrl = msg.toUrl;
            Util.showMessage(msg);
            svc.sendMessage(msg);
            host.Close();
        }
예제 #10
0
            static void Main(string[] args)
            {
                XMLUtilitySpace.title("testing utilities");
                Console.WriteLine();
                XMLUtilitySpace.title("testing makeUrl");
                string localUrl = Utilities.makeUrl("localhost", "7070");
                string remoteUrl = Utilities.makeUrl("localhost", "7071");
                Console.Write("\n  localUrl  = {0}", localUrl);
                Console.Write("\n  remoteUrl = {0}", remoteUrl);
                Console.WriteLine();

                XMLUtilitySpace.title("testing url parsing");
                string port = Utilities.urlPort(localUrl);
                string addr = Utilities.urlAddress(localUrl);
                Console.Write("\n  local port = {0}", port);
                Console.Write("\n  local addr = {0}", addr);
                Console.WriteLine();

                XMLUtilitySpace.title("testing processCommandLine");
                bool logging = false;
                string wpfClientURL = "http://localhost:8089/CommService";
                localUrl = Utilities.processCommandLineForLocal(args, localUrl, ref logging,ref wpfClientURL);
                remoteUrl = Utilities.processCommandLineForRemote(args, remoteUrl);
                Console.Write("\n  localUrl  = {0}", localUrl);
                Console.Write("\n  remoteUrl = {0}", remoteUrl);
                Console.WriteLine();

                XMLUtilitySpace.title("testing swapUrls(ref Message msg)");
                Message msg = new Message();
                msg.toUrl = "http://localhost:8080/CommService";
                msg.fromUrl = "http://localhost:8081/CommService";
                msg.content = "swapee";
                Utilities.showMessage(msg);
                Console.WriteLine();
                Utilities.swapUrls(ref msg);
                Utilities.showMessage(msg);
                Console.Write("\n\n");
            }
예제 #11
0
 public static void swapUrls(ref Message msg)
 {
     string temp = msg.fromUrl;
     msg.fromUrl = msg.toUrl;
     msg.toUrl = temp;
 }
 //---------< add database type to message >-------------
 private void get_DB_type(ref Message msg)
 {
     switch (comboBox_db.SelectedValue.ToString())
       {
     case "Database<int,string>":
       msg.content = "keytype,integer,payloadtype,String,";
       flag = false;
       break;
     case "Database<string,List<string>>":
       msg.content = "keytype,String,payloadtype,List`1,";
       flag = true;
       break;
       }
 }
 //---------< add data according to query to message >-------------
 private void delete_Element(ref Message msg)
 {
     msg.content += "key,";
       if (Key_Value.Text != null & Key_Value.Text != "Key of an Element")
       {
     if (!validate_Key(Key_Value.Text))
     {
       Result_Box.Items.Insert(0, "Not a valid key");
       return;
     }
     msg.content += Key_Value.Text;
     if (sndr.sendMessage(msg))
     {
       Result_Box.Items.Insert(0, "Sending Message: " + msg.content);
     }
     else
     {
       Result_Box.Items.Insert(0, "Not able to send Message");
     }
       }
       else
       {
     Result_Box.Items.Insert(0, "Not a Valid Query");
       }
 }
 //---------< add payload to query message >-------------
 private bool addPayload(ref Message msg)
 {
     msg.content += "payload,";
       if (Number_of_Payload.Text != "Payload (String,String)" && Number_of_Payload.Text != null)
       {
     if (Number_of_Payload.Text.Contains(','))
     {
       String[] payloadList = Number_of_Payload.Text.Split(',');
       msg.content += payloadList.Length + ",";
       foreach (string payload in payloadList)
       {
     msg.content += payload + ",";
       }
     }
     else
     {
       msg.content += "1," + Number_of_Payload.Text.ToString() + ",";
     }
     return true;
       }
       else
       {
     Result_Box.Items.Insert(0, "Not a Valid Payload");
     return false;
       }
 }
 //---------< add children to query message >-------------
 private bool addChildren(ref Message msg)
 {
     msg.content += "children,";
       if (Number_Of_Children.Text != "Children (String,String)" && Number_Of_Children.Text != null)
       {
     if (Number_Of_Children.Text.Contains(','))
     {
       String[] children = Number_Of_Children.Text.Split(',');
       msg.content += children.Length + ",";
       foreach (string child in children)
       {
     if (!validate_Children(child))
     {
       Result_Box.Items.Insert(0, "Not a valid children");
       return false;
     }
     msg.content += child + ",";
       }
     }
     else
     {
       if (!validate_Children(Number_Of_Children.Text.ToString()))
       {
     Result_Box.Items.Insert(0, "Not a valid children");
     return false;
       }
       msg.content += "1," + Number_Of_Children.Text.ToString() + ",";
     }
     return true;
       }
       else
       {
     Result_Box.Items.Insert(0, "Not a Valid Child");
     return false;
       }
 }
예제 #16
0
        //----< defines SendThread and its operations >----------------------

        /*
         * - asynchronous function defines Sender sendThread processing
         * - creates BlockingQueue<Message> to use inside Sender.sendMessage()
         * - creates and starts a thread executing that processing
         * - uses msg.toUrl to find or create a proxy for url destination
         */
        public virtual SWTools.BlockingQueue <Message> defineSendProcessing()
        {
            SWTools.BlockingQueue <Message> sendQ = new SWTools.BlockingQueue <Message>();
            Action sendAction = () =>
            {
                ThreadStart sendThreadProc = () =>
                {
                    while (true)
                    {
                        try
                        {
                            Message smsg = sendQ.deQ();
                            if (smsg.content == "closeSender")
                            {
                                Console.Write("\n  send thread quitting\n\n");
                                break;
                            }
                            if (proxyStore.ContainsKey(smsg.toUrl))
                            {
                                // proxy already created so use it
                                if (Util.verbose)
                                {
                                    Console.Write("\n  sender sending message to service {0}", smsg.toUrl);
                                }
                                proxyStore[smsg.toUrl].sendMessage(smsg);
                            }
                            else
                            {
                                // create new proxy with Connect, save it, and use it

                                if (this.Connect(smsg.toUrl)) // if Connect succeeds it will set proxy and send start msg
                                {
                                    if (Util.verbose)
                                    {
                                        Console.Write("\n  sender created proxy and sending message {0}", smsg.toUrl);
                                    }
                                    proxyStore[smsg.toUrl] = this.proxy; // save proxy
                                    proxy.sendMessage(smsg);
                                }
                                else
                                {
                                    sendMsgNotify(String.Format("could not connect to {0}\n", smsg.toUrl));
                                    continue;
                                }
                            }
                        }
                        catch (Exception ex)
                        {
                            sendExceptionNotify(ex);
                            continue;
                        }
                    }
                };
                Thread t = new Thread(sendThreadProc); // start the sendThread
                t.IsBackground = true;
                t.Start();
            };

            this.setAction(sendAction);
            return(sendQ);
        }
예제 #17
0
        //----< send a message to remote Receiver >--------------------------

        public bool sendMessage(Message msg)
        {
            sendQ.enQ(msg);
            return(true);
        }
 //---------< add querytype to message >-------------
 private void write_client_query(ref Message msg)
 {
     switch (comboBox_query.SelectedItem.ToString())
       {
     case "Insert Element":
       msg.content += "Insert Element,";
       insert_Element_clicked(ref msg);
       break;
     case "Edit Element Metadata":
       msg.content += "Edit Element Metadata,";
       edit_Element_Metadata_clicked(ref msg);
       break;
     case "Edit Element Metadata and Add Children":
       msg.content += "Edit Element Metadata and Add Children,";
       edit_Element_Metadata_clicked(ref msg);
       break;
     case "Edit Element Metadata and Remove Children":
       msg.content += "Edit Element Metadata and Remove Children,";
       edit_Element_Metadata_clicked(ref msg);
       break;
     case "Edit Element Metadata and Edit Payload":
       msg.content += "Edit Element Metadata and Edit Payload,";
       edit_Element_Metadata_clicked(ref msg);
       break;
     case "Delete Element":
       msg.content += "Delete Element,";
       delete_Element(ref msg);
       break;
     case "Persist Database":
       msg.content += "Persist Database,";
       persist_Database(ref msg);
       break;
     case "Restore Database":
       msg.content += "Restore Database,";
       restore_Database(ref msg);
       break;
       }
 }
예제 #19
0
    static void Main(string[] args)
    {
      "testing utilities".title('=');
      Console.WriteLine();

      "testing makeUrl".title();
      string localUrl = Utilities.makeUrl("localhost", "7070");
      string remoteUrl = Utilities.makeUrl("localhost", "7071");
      Console.Write("\n  localUrl  = {0}", localUrl);
      Console.Write("\n  remoteUrl = {0}", remoteUrl);
      Console.WriteLine();

      "testing url parsing".title();
      string port = urlPort(localUrl);
      string addr = urlAddress(localUrl);
      Console.Write("\n  local port = {0}", port);
      Console.Write("\n  local addr = {0}", addr);
      Console.WriteLine();

      "testing processCommandLine".title();
      localUrl = Utilities.processCommandLineForLocal(args, localUrl);
      remoteUrl = Utilities.processCommandLineForRemote(args, remoteUrl);
      Console.Write("\n  localUrl  = {0}", localUrl);
      Console.Write("\n  remoteUrl = {0}", remoteUrl);
      Console.WriteLine();

      "testing swapUrls(ref Message msg)".title();
      Message msg = new Message();
      msg.toUrl = "http://localhost:8080/CommService";
      msg.fromUrl = "http://localhost:8081/CommService";
      msg.content = "swapee";
      Utilities.showMessage(msg);
      Console.WriteLine();

      Utilities.swapUrls(ref msg);
      Utilities.showMessage(msg);
      Console.Write("\n\n");
    }
 //---------< add data according to query to message >-------------
 private void insert_Element_clicked(ref Message msg)
 {
     msg.content += "key,";
       if (Key_Value.Text != null & Key_Value.Text != "Key of an Element")
       {
     if (!validate_Key(Key_Value.Text))
     {
       Result_Box.Items.Insert(0, "Not a valid key");
       return;
     }
     msg.content += Key_Value.Text + ",name," + Name_Value.Text + ",descr," + Descr_Value.Text + ",timestamp,";
     DateTime date = new DateTime();
     if (Timestamp_Value.Text != "Timestamp (MM/DD/YYYY HH:MM:SS AM/PM)" & Timestamp_Value.Text != null & DateTime.TryParse(Timestamp_Value.Text, out date))
     {
       msg.content += date.ToString() + ",";
     }
     else
     {
       Result_Box.Items.Insert(0, "Not a Valid Date");
       return;
     }
     if (!addChildren(ref msg))
     {
       return;
     }
     if (!addPayload(ref msg))
     {
       return;
     }
     if (sndr.sendMessage(msg))
     {
       Result_Box.Items.Insert(0, "Sending Message: " + msg.content);
     }
     else
     {
       Result_Box.Items.Insert(0, "Not able to send Message");
     }
       }
       else
       {
     Result_Box.Items.Insert(0, "Not a Valid Query");
       }
 }
예제 #21
0
 public static void showMessage(Message msg)
 {
     Console.Write("\n  msg.fromUrl: {0}", msg.fromUrl);
     Console.Write("\n  msg.toUrl:   {0}", msg.toUrl);
     Console.Write("\n  msg.content: {0}", msg.content);
 }
 //---------< add data according to query to message >-------------
 private void pattern_Matching(ref Message msg)
 {
     msg.content += "pattern,";
       if (Pattern_Value.Text != "Pattern to Search")
       {
     msg.content += Pattern_Value.Text;
     if (sndr.sendMessage(msg))
     {
       Result_Box.Items.Insert(0, "Sending Message: " + msg.content);
     }
     else
     {
       Result_Box.Items.Insert(0, "Not able to send Message");
     }
       }
       else if (Pattern_Value.Text == null)
       {
     msg.content += "";
     if (sndr.sendMessage(msg))
     {
       Result_Box.Items.Insert(0, "Sending Message: " + msg.content);
     }
     else
     {
       Result_Box.Items.Insert(0, "Not able to send Message");
     }
       }
       else
       {
     Result_Box.Items.Insert(0, "Not a Valid Query");
       }
 }
예제 #23
0
 /// <summary>
 /// R#7 Queries for the value of a specified key,The children of a specified key.
 /// The set of all keys matching a specified pattern which defaults to all keys.
 /// </summary>
 public void ReadQueryHandle(ref Message msg, ref string msgid)
 {
     bool status = false;
     string pattern = "";
     XDocument doc = XDocument.Load(new StringReader(msg.content));            
     string op = doc.Descendants("OperationMessage").Select(i => i.Element("QueryType")).Single().Value;
     msgid = doc.Descendants("MessageID").Select(i => i).Single().Value;
     int key = 0;
     switch(op)
     {
         case "GetByKey":
             DBElement<int, string> elem;
             GetByKey(out status, ref doc, out key, out elem);
             msg.content = doc.ToString();
             break;
         case "GetChildren":
             GetChildren(out status, ref doc, out key, out elem);
             msg.content = doc.ToString();
             break;
         case "GetKeyCriteria":
             pattern = GetKeyCriteria(ref doc);
             msg.content = doc.ToString();
             break;
         case "GetByMetadataCriteria":
             pattern = GetByMetaData(ref doc);
             msg.content = doc.ToString();
             break;
         case "GetByTimeStampCriteria":
             List<int> keyMet;
             DateTime FromDate = DateTime.Parse(doc.Descendants("FromDate").Select(i => i).Single().Value);
             DateTime ToDate;
             GetByTimeStampCriteria(ref doc, out keyMet, FromDate, out ToDate);
             msg.content = doc.ToString();
             break;
     }
 }
예제 #24
0
        //----< Connect repeatedly tries to send messages to service >-------

        /// <summary>
        /// Connect to sender service
        /// </summary>
        /// <param name="remoteUrl"></param>
        /// <returns></returns>
        public bool Connect(string remoteUrl)
        {
            if (Util.verbose)
                sendMsgNotify("attempting to connect");
            if (isConnected(remoteUrl))
                return true;
            proxy = CreateProxy(remoteUrl);
            int attemptNumber = 0;
            Message startMsg = new Message();
            startMsg.fromUrl = localUrl;
            startMsg.toUrl = remoteUrl;
            startMsg.content = "connection start message";
            while (attemptNumber < MaxConnectAttempts)
            {
                try
                {
                    proxy.sendMessage(startMsg);    // will throw if server isn't listening yet
                    proxyStore[remoteUrl] = proxy;  // remember this proxy
                    if (Util.verbose)
                        sendMsgNotify("connected");
                    return true;
                }
                catch
                {
                    ++attemptNumber;
                    sendAttemptNotify(attemptNumber);
                    Thread.Sleep(100);
                }
            }
            return false;
        }
 //---------< add querytype to message >-------------
 private void read_client_query(ref Message msg)
 {
     switch (comboBox_query.SelectedItem.ToString())
       {
     case "Search Key-Value":
       msg.content += "Search Key-Value,";
       search_Key_Value(ref msg);
       break;
     case "Search Children":
       msg.content += "Search Children,";
       search_Children(ref msg);
       break;
     case "Pattern Matching in Key":
       msg.content += "Pattern Matching,";
       pattern_Matching(ref msg);
       break;
     case "String in Metadata":
       msg.content += "String in Metadata,";
       string_Metadata(ref msg);
       break;
     case "Time-Date Interval":
       msg.content += "Time-Date Interval,";
       time_Date_Interval(ref msg);
       break;
       }
 }
예제 #26
0
 //----< one way to define Receiver functionality >-------------------
 /*
  * - This function not  used in these demos.
  * - Instead, Receiver functionality is defined by a serviceAction.
  * - Look at Server main for an example.
  */
 public virtual void serverProcessMessage(Message msg)
 {
 }
예제 #27
0
    //----< called by clients, will only block briefly >-----------------

    public void sendMessage(Message msg)
    {
      if(Util.verbose)
        Console.Write("\n  this is CommService.sendMessage");
      rcvrQueue.enQ(msg);
    }
 //---------< add data according to query to message >-------------
 private void restore_Database(ref Message msg)
 {
     msg.content += "Source,";
       if (File_Name_Value.Text != null & File_Name_Value.Text != "Write File Name")
       {
     msg.content += File_Name_Value.Text;
     if (sndr.sendMessage(msg))
     {
       Result_Box.Items.Insert(0, "Sending Message: " + msg.content);
     }
     else
     {
       Result_Box.Items.Insert(0, "Not able to send Message");
     }
       }
       else
       {
     Result_Box.Items.Insert(0, "Not a Valid File Name");
       }
 }
예제 #29
0
        //----< send a message to remote Receiver >--------------------------

        public bool sendMessage(Message msg)
        {
            sendQ.enQ(msg);
            return true;
        }
 //---------< add data according to query to message >-------------
 private void search_Key_Value(ref Message msg)
 {
     msg.content += "key,";
       if (Key_Value.Text != null & Key_Value.Text != "Key of an Element")
       {
     msg.content += Key_Value.Text;
     if (sndr.sendMessage(msg))
     {
       Result_Box.Items.Insert(0, "Sending Message: " + msg.content);
     }
     else
     {
       Result_Box.Items.Insert(0, "Not able to send Message");
     }
       }
       else
       {
     Result_Box.Items.Insert(0, "Not a Valid Query");
       }
 }
예제 #31
0
        //----< Test Stub >--------------------------------------------------

#if (TEST_SENDER)
        static void Main(string[] args)
        {
            Util.verbose = false;
            Console.Write("\n  starting CommService Sender");
            Console.Write("\n =============================\n");
            Console.Title = "CommService Sender";
            Sender sndr = new Sender("http://localhost:8081/CommService");
            sndr.processCommandLine(args);
            int numMsgs = 5;
            int counter = 0;
            Message msg = null;
            while (true)
            {
                msg = new Message();
                msg.fromUrl = sndr.localUrl;
                msg.toUrl = sndr.remoteUrl;
                msg.content = "Message #" + (++counter).ToString();
                Console.Write("\n  Sending {0}", msg.content);
                sndr.sendMessage(msg);
                Thread.Sleep(30);
                if (counter >= numMsgs)
                    break;
            }
            msg = new Message();
            msg.fromUrl = sndr.localUrl;
            msg.toUrl = "http://localhost:9999/CommService";
            msg.content = "no listener for this message";
            Console.Write("\n  sending {0}", msg.content);
            sndr.sendMessage(msg);
            msg = new Message();
            msg.fromUrl = sndr.localUrl;
            msg.toUrl = sndr.remoteUrl;
            msg.content = "Message #" + (++counter).ToString();
            Console.Write("\n  sending {0}", msg.content);
            sndr.sendMessage(msg);
            msg = new Message();
            msg.fromUrl = sndr.localUrl;
            msg.toUrl = sndr.remoteUrl;
            msg.content = "closeSender";  // message for self and Receiver
            Console.Write("\n  sending {0}", msg.content);
            sndr.sendMessage(msg);
        }
 //---------< add data according to query to message >-------------
 private void string_Metadata(ref Message msg)
 {
     msg.content += "string,";
       if (Pattern_Value.Text != null & Pattern_Value.Text != "Pattern to Search")
       {
     msg.content += Pattern_Value.Text;
     if (sndr.sendMessage(msg))
     {
       Result_Box.Items.Insert(0, "Sending Message: " + msg.content);
     }
     else
     {
       Result_Box.Items.Insert(0, "Not able to send Message");
     }
       }
       else
       {
     Result_Box.Items.Insert(0, "Not a Valid Query");
       }
 }