예제 #1
0
		internal virtual void  initSession(Session s)
		{
			s.SourceLocator = this;
			
			m_fileInfo = new FileInfoCache();
			m_exprCache.clear();
			
			m_fileInfo.bind(s);
			m_exprCache.bind(s);
			
			// bind catching a version problem
			bool correctVersion = true;
			try
			{
				s.bind();
			}
			catch (VersionException)
			{
				correctVersion = false;
			}
			
			// reset session properties
			propertyPut(LIST_LINE, 1);
			propertyPut(LIST_MODULE, 1); // default to module #1
			propertyPut(BPNUM, 0); // set current breakpoint number as something bad
			propertyPut(LAST_FRAME_DEPTH, 0);
			propertyPut(CURRENT_FRAME_DEPTH, 0);
			propertyPut(DISPLAY_FRAME_NUMBER, 0);
			propertyPut(METADATA_ATTEMPTS_PERIOD, 250); // 1/4s per attempt
			propertyPut(METADATA_NOT_AVAILABLE, 0); // counter for failures
			propertyPut(METADATA_ATTEMPTS, METADATA_RETRIES);
			propertyPut(PLAYER_FULL_SUPPORT, correctVersion?1:0);
			
			String previousURI = m_mruURI;
			m_mruURI = m_session.URI;
			
			// try to reapply the breakpoint's
			if (previousURI != null && m_mruURI != null && previousURI.ToUpper().Equals(m_mruURI.ToUpper()))
				reapplyBreakpoints();
			else
			{
				while (m_breakpoints.Count > 0)
					m_breakpoints.RemoveAt(0);
			}
			
			m_requestResume = false;
			m_stepResume = false;
		}