예제 #1
0
        public AMSockConn NewSockConn(int i_iARReadPort, int i_iARWritePort)
        {
            AMSockConn ascRet = null;

            ascRet = new AMSockConn();
            m_Socks.Add(ascRet);

            ascRet.m_iARReadPort  = i_iARReadPort;
            ascRet.m_iARWritePort = i_iARWritePort;

            ascRet.m_listenARRead  = new TcpListener(IPAddress.Any, ascRet.m_iARReadPort);
            ascRet.m_listenARWrite = new TcpListener(IPAddress.Any, ascRet.m_iARWritePort);
            if ((ascRet.m_listenARRead == null) || (ascRet.m_listenARWrite == null))
            {
                ascRet = null;
                //Console.Error.WriteLine("ERROR AMSockConn.NewSockConn() - Couldn't create sockets!");
                m_Logger.Log(Level.Exception, "AMSockConn.NewSockConn() - Couldn't create sockets!");
            }
            else
            {
                ascRet.m_listenARRead.Start();
                ascRet.m_listenARWrite.Start();
            }

            return(ascRet);
        }
예제 #2
0
        public AMSockConn GetSockConn(int i_iVMCKey)
        {
            int        ii = 0, iLen = 0;
            AMSockConn ascTmp = null, ascRet = null;

            Monitor.Enter(m_Lock);

            try
            {
                iLen = m_Socks.Count;
                for (ii = 0; ((ii < iLen) && (ascRet == null)); ii++)
                {
                    ascTmp = (AMSockConn)(m_Socks[ii]);
                    if (ascTmp.m_VMC != null)                                                           // Otherwise it hasn't been tied to a VMC, and thus isn't in use.
                    {
                        if (ascTmp.m_VMC.m_iKey == i_iVMCKey)
                        {
                            ascRet = ascTmp;
                        }
                    }
                }

                // If a socket wasn't found for the VMC...
                if (ascRet == null)
                {
                    m_Logger.Log(Level.Exception, "AMSockConn.GetSockConn() - Socket not found for VMC #" + i_iVMCKey.ToString() + ".");
                    m_Logger.Log(Level.Debug, "GSC dump:------------------------------------------------------");
                    ii = 0;
                    for (ii = 0; ii < iLen; ii++)
                    {
                        ascTmp = (AMSockConn)(m_Socks[ii]);
                        if (ascTmp.m_VMC != null)
                        {
                            m_Logger.Log(Level.Debug, string.Format("GSC dump: [{0}] == {1}", ii, ascTmp.m_VMC.m_iKey));
                        }
                    }
                    m_Logger.Log(Level.Debug, "GSC dump:------------------------------------------------------");
                }
            }
            catch (Exception exc)
            {
                m_Logger.Log(Level.Exception, string.Format("AMSockConn.GetSockConn() - Exception for VMC #{0}: '{1}'.", i_iVMCKey.ToString(), exc.ToString()));
            }
            finally
            {
                Monitor.Exit(m_Lock);
            }

            return(ascRet);
        }
예제 #3
0
        public AMSockConn GetSockConn(string i_sVMCDescription)
        {
            int        ii = 0, iLen = 0;
            AMSockConn ascTmp = null, ascRet = null;

            Monitor.Enter(m_Lock);

            try
            {
                iLen = m_Socks.Count;
                for (ii = 0; ((ii < iLen) && (ascTmp == null)); ii++)
                {
                    ascTmp = (AMSockConn)(m_Socks[ii]);
                    if (ascTmp.m_VMC.m_sDescription == i_sVMCDescription)
                    {
                        ascRet = ascTmp;
                    }
                }

                // If a socket wasn't found for the VMC...
                if (ascRet == null)
                {
                    m_Logger.Log(Level.Exception, "AMSockConn.GetSockConn() - Socket not found for VMC by description: '" + i_sVMCDescription + "'.");
                }
            }
            catch (Exception exc)
            {
                m_Logger.Log(Level.Exception, string.Format("AMSockConn.GetSockConn() - Exception for VMC '{0}': '{1}'.", i_sVMCDescription, exc.ToString()));
            }
            finally
            {
                Monitor.Exit(m_Lock);
            }

            return(ascRet);
        }