Author Topic: Need help in avoiding increasing Physical Memory of IIS Server, Customized GAD  (Read 3651 times)

Offline visveswars

  • Newbie
  • *
  • Posts: 6
  • Karma: 0
Dear All,

I recently developed a sample agent login application, code pasted as below. when i click on agent login button, the Tserver Protocol opens the connection to TServer and agent is logged in successfully. But when i go and see W3WP.EXE Process in the task manager, it starts increasing with memory usage every second. Finally it never ends until it uses full memory of the particular Application Pool.

IIS 6.0 with WIndows server 2003. i tried this code with multiple sites but same thing happened. SIP Server Version 8.0. Help me with some idea.

protected void Button1_Click(object sender, EventArgs e)
    {
        bool connect = false;
        try
        {
            string tserverIP;
            string tserverPort;
            // string queue;
            //  protocolManagementService = new ProtocolManagementService();
            //  fileOperator = new FileOperator();
            string tserverName = "SIPTS01";
            TServerConfiguration tserverConfiguration = new TServerConfiguration(tserverName);
            tserverIP = "172.16.0.6";
            tserverPort = "7090";
            //  queue = System.Configuration.ConfigurationManager.AppSettings["queue"];

            tserverConfiguration.Uri = new Uri("tcp://" + tserverIP + ":" + tserverPort);
            tserverConfiguration.ClientName = "SMARTGAD_Domestic";
            receiver = new Thread(new ThreadStart(this.ReceiveMessages));

            tServerProtocol =
            new TServerProtocol(
            new Endpoint(tserverName, tserverIP, System.Convert.ToInt32(tserverPort)));
            //  receiver = new Thread(new ThreadStart(this.ReceiveMessages));
            //protocolManagementService.Register(tserverConfiguration);
            //  EventBrokerService mEventBroker = new EventBrokerService();
            //mEventBroker = BrokerServiceFactory.CreateEventBroker(protocolManagementService.Receiver);
            //mEventBroker.Register(OnEventAgentLogin);
            //mEventBroker.Register(OnEventAgentLogout);
            //mEventBroker.Register(OnEventAgentReady);
            //mEventBroker.Register(OnEventAgentNotReady);
            //mEventBroker.Register(OnEventErrorVoice);
            //mEventBroker.Register(OnEventError);
            //mEventBroker.Register(eventUSerEventResponse);
            //mEventBroker.Register(OnEventErrorOutboundServer);
            //mEventBroker.Register(OnEventEstablished);
            //mEventBroker.Register(eventRingingResponse);
            //mEventBroker.Register(eventDialingResponse);
            //mEventBroker.Register(OnEventReleased);
            //mEventBroker.Register(OnEventDNoutOfService);
            //mEventBroker.Register(onEventBackInService);
            //mEventBroker.Register(OnEventRegistered);
            //mEventBroker.Register(OnEventAttachedDataChanged);
            //mEventBroker.Register(OnEventOnHook);

            //if (protocolManagementService[tserverName].State == ChannelState.Opened)
            //{

            //}
            //else
            //{
            //    protocolManagementService[tserverName].Open();
            //}
            if (tServerProtocol.State == ChannelState.Opened)
            {
                //  tServerProtocol.Close();
                this.tServerProtocol.Close();
            }
            try
            {
                {
                    tServerProtocol.Open();
                    connect = true;
                    //isRunning = true;
                    //receiver.Start();
                }
            }

            catch (Exception ex)
            {
                protocolObjectCreated = false;
                //    errMsg = exp.Message + ":tServerName";
                receiver.Abort();
                connect = false;
                //  return false;
            }
            isRunning = true;
            receiver.Start();
            protocolObjectCreated = true;
            agentLogin();

        }
        catch (Exception ex)
        {

        }
    }
        private void ReceiveMessages()
        {
            while (isRunning)
            {

                if (tServerProtocol.State != ChannelState.Opened)
                {
                    System.Threading.Thread.Sleep(500);
                    continue;
                }

                IMessage response = tServerProtocol.Receive();

                if (response != null)
                {
                    checkReturnMessage(response);
                }
            }
        }
        public void checkReturnMessage(IMessage response)
        {
            bool knownEvent = false;
            string messageText = "";

            if (response != null)
            {
                switch (response.Id)
                {
                    case EventACK.MessageId:
                        knownEvent = true;
                        break;
                    case EventAgentLogin.MessageId:
                      //  messageText = eventAgentLoginResponse(response);
                        knownEvent = true;
                        break;
                    case EventDialing.MessageId:
                    //  messageText = eventDialingResponse(response);
                        knownEvent = true;
                        break;
                    case EventRinging.MessageId:
                      // messageText = eventRingingResponse(response);
                        knownEvent = true;
                        break;
                    case EventEstablished.MessageId:
                      //  messageText = eventEstablishedResponse(response);
                        knownEvent = true;
                        break;
                    case EventReleased.MessageId:
                      //  messageText = eventReleasedResponse(response);
                      //  connId = null;
                        knownEvent = true;
                        break;
                    case EventHeld.MessageId:
                      //  messageText = eventHeldResponse(response);
                        knownEvent = true;
                        break;
                    case EventRetrieved.MessageId:
                      //  messageText = eventRetrievedResponse(response);
                        knownEvent = true;
                        break;
                    case EventRegistered.MessageId:
                        knownEvent = true;
                        break;
                    case EventUnregistered.MessageId:
                        knownEvent = true;
                        break;
                    case EventAgentReady.MessageId:
                    //  messageText = eventAgentReadyResponse(response);
                        knownEvent = true;
                        break;
                    case EventAgentNotReady.MessageId:
                      //  messageText = eventAgentNotReadyResponse(response);
                        knownEvent = true;
                        break;
                    case EventAgentLogout.MessageId:
                      //  messageText = eventAgentLogoutResponse(response);
                        knownEvent = true;
                        break;
                    case EventQueueLogout.MessageId:
                        knownEvent = true;
                        break;
                    case EventLinkConnected.MessageId:
                      //  messageText = eventLinkConnectedResponse(response);
                        knownEvent = true;
                        break;
                    case EventUserEvent.MessageId:
                      //  eventUSerEventResponse(response);
                        knownEvent = true;
                        break;
                    case RequestInitiateConference.MessageId:
                      //  messageText = eventInitiateConferenceResponse(response);
                        knownEvent = true;
                        break;
                    case RequestCompleteConference.MessageId:
                        RequestCompleteConference comconferenece = response as RequestCompleteConference;
                        break;
                    case RequestInitiateTransfer.MessageId:
                      //  messageText = eventIntTransferResponse(response);
                        knownEvent = true;
                        break;
                    //case EventEstablished.MessageId :
                    //Req
                    //case Req

                }
                if (knownEvent)
                {
                    // gsMain.MessageQueue(messageText);
                }
            }
        }

        public void agentLogin()
        {
            RequestRegisterAddress requestRegisterAddress =
        RequestRegisterAddress.Create("4002",
        RegisterMode.ModeShare,
        ControlMode.RegisterDefault,
        AddressType.DN);

            //requestRegisterAddress.ThisDN = extension;
            //requestRegisterAddress.RegisterMode = RegisterMode.ModeShare;
            //requestRegisterAddress.ControlMode = ControlMode.RegisterDefault;
            //requestRegisterAddress.AddressType = AddressType.DN;





            IMessage response = tServerProtocol.Request(requestRegisterAddress);
            tServerProtocol.Send(requestRegisterAddress);
            RequestAgentLogin requestAgentLogin =
            RequestAgentLogin.Create("4002",
            AgentWorkMode.ManualIn);


            requestAgentLogin.ThisDN = "4002";
            //  requestAgentLogin.ThisQueue = queue;

            requestAgentLogin.AgentID = "786";
            requestAgentLogin.Password = "1234";
            //  protocolManagementService[tserverName].Send(requestAgentLogin);
            //    IMessage agentLoginResponse = protocolManagementService[tserverName].Request(requestAgentLogin);
            IMessage loginResponse = tServerProtocol.Request(requestAgentLogin);

            //  return loginResponse.Name;
        }