Exemple #1
0
 public void StopListener()
 {
     lock (runningLock)
     {
         if (!running)
         {
             return;
         }
         targetConnectionPool.StopDaemon();
         try
         {
             listener.Close();
             running = false;
         }
         catch (SocketException e)
         {
             if (OnExceptionRaised != null)
             {
                 OnExceptionRaised(this, new ExceptionRaisedEventArgs
                 {
                     E            = e,
                     Explaination = "Closing Error"
                 });
             }
         }
         stateEventChanged.WaitOne();
     }
     if (OnListenerStateChanged != null)
     {
         ListenerStateChangedEventArgs args = new ListenerStateChangedEventArgs();
         OnListenerStateChanged(this, args);
     }
 }
Exemple #2
0
        public void StartListener()
        {
            lock (runningLock)
            {
                if (running)
                {
                    return;
                }

                if (targetConnctionGuide == null)
                {
                    throw new Exception("Target socket manager not set");
                }
                listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

                try
                {
                    listener.Bind(new IPEndPoint(IPAddress.Any, port));
                    listener.Listen(10);
                    running = true;
                }
                catch (SocketException e)
                {
                    if (OnExceptionRaised != null)
                    {
                        OnExceptionRaised(this, new ExceptionRaisedEventArgs
                        {
                            E            = e,
                            Explaination = "Bind error. Port in use?"
                        });
                    }
                    return;
                }
                TargetConnectionPool.StartDaemon();
            }
            if (OnListenerStateChanged != null)
            {
                ListenerStateChangedEventArgs args = new ListenerStateChangedEventArgs();
                OnListenerStateChanged(this, args);
            }
            while (running)
            {
                Socket clientSocket = null;
                try
                {
                    clientSocket = listener.Accept();
                }
                catch { }
                if (clientSocket != null)
                {
                    BiConnection client = new BiConnection(this, clientSocket);
                    client.TargetConnctionGuide    = TargetConnctionGuide;
                    client.TargetConnectionPool    = TargetConnectionPool;
                    client.TargetResponseValidator = targetResponseValidator;
                    client.BeginClientReceive();
                }
            }
            stateEventChanged.Set();
        }
Exemple #3
0
 private void DoListenerStateChanged(object sender, ListenerStateChangedEventArgs args)
 {
     try
     {
         this.BeginInvoke(new Del1(UpdateGinnayStatus), new object[] { sender, args });
     }
     catch (Exception)
     {
     }
 }
Exemple #4
0
        private void UpdateGinnayStatus(object sender, ListenerStateChangedEventArgs args)
        {
            StringBuilder sb = new StringBuilder();

            sb.Append("Ginnay is ");
            if (ins.Listener.Running)
            {
                sb.Append("running on port ").Append(ins.Listener.Port);
                btnStop.Enabled  = true;
                btnStart.Enabled = false;
            }
            else
            {
                sb.Append("stopped");
                btnStart.Enabled = true;
                btnStop.Enabled  = false;
            }
            lblStatus.Text = sb.ToString();
            Log(lblStatus.Text);
        }