Exemple #1
0
		/// <summary>
		/// Initializes a new instance of the MessageBroker class.
		/// </summary>
		public MessageBroker(MessageServer messageServer) {
			_messageServer = messageServer;
			_services = new CopyOnWriteDictionary();
			_endpoints = new CopyOnWriteDictionary();
			_factories = new CopyOnWriteDictionary();
			_destinationServiceMap = new CopyOnWriteDictionary();
			_destinations = new CopyOnWriteDictionary();
			_clientManager = new ClientManager(this);
			_sessionManager = new SessionManager(this);
			_loginManager = new LoginManager();
		}
Exemple #2
0
 /// <summary>
 /// Initializes a new instance of the MessageBroker class.
 /// </summary>
 public MessageBroker(MessageServer messageServer)
 {
     _messageServer         = messageServer;
     _services              = new CopyOnWriteDictionary();
     _endpoints             = new CopyOnWriteDictionary();
     _factories             = new CopyOnWriteDictionary();
     _destinationServiceMap = new CopyOnWriteDictionary();
     _destinations          = new CopyOnWriteDictionary();
     _clientManager         = new ClientManager(this);
     _sessionManager        = new SessionManager(this);
     _loginManager          = new LoginManager();
 }
Exemple #3
0
		/// <summary>
		/// Initializes the module and prepares it to handle requests.
		/// </summary>
		/// <param name="application">An HttpApplication that provides access to the methods, properties, and events common to all application objects within an ASP.NET application.</param>
		public void Init(HttpApplication application) {
			//http://support.microsoft.com/kb/911816
			// Do this one time for each AppDomain.
			if (!_initialized) {
				lock (_objLock) {
					if (!_initialized) {
						if (Log.IsInfoEnabled) {
							Log.Info("************************************");
							Log.Info(__Res.GetString(__Res.Fluorine_Start));
							Log.Info(__Res.GetString(__Res.Fluorine_Version, Assembly.GetExecutingAssembly().GetName().Version));
							Log.Info(string.Format("Common language runtime version {0}", Environment.Version));
							Log.Info("************************************");
							Log.Info(__Res.GetString(__Res.MessageServer_Create));
						}
						try {
							// See if we're running in full trust
							new PermissionSet(PermissionState.Unrestricted).Demand();
							//LinkDemands and InheritenceDemands Occur at JIT Time
							//http://blogs.msdn.com/shawnfa/archive/2006/01/11/511716.aspx
							WireAppDomain();
							RegisterObject();
						} catch (MethodAccessException) { } catch (SecurityException) { }

						FluorineWebContext.Initialize();

						Log.Info(__Res.GetString(__Res.ServiceBrowser_Aquire));
						try {
							Type type = ObjectFactory.Locate("GodLesZ.Library.Amf.ServiceBrowser.ServiceBrowserRenderer");
							if (type != null) {
								_serviceBrowserRenderer = Activator.CreateInstance(type) as IServiceBrowserRenderer;
								if (_serviceBrowserRenderer != null)
									Log.Info(__Res.GetString(__Res.ServiceBrowser_Aquired));
							}
						} catch (Exception ex) {
							Log.Fatal(__Res.GetString(__Res.ServiceBrowser_AquireFail), ex);
						}

						try {
							_messageServer = new MessageServer();
							string[] possibleConfigFolderPaths = new string[PossibleConfigFolderNames.Length];
							for (int i = 0; i < PossibleConfigFolderNames.Length; i++) {
								string configPath = Path.Combine(HttpRuntime.AppDomainAppPath, PossibleConfigFolderNames[i]);
								possibleConfigFolderPaths[i] = configPath;
							}
							_messageServer.Init(possibleConfigFolderPaths, _serviceBrowserRenderer != null);
							_messageServer.Start();
							Log.Info(__Res.GetString(__Res.MessageServer_Started));
							HttpContext.Current.Application[FluorineMessageServerKey] = _messageServer;
						} catch (Exception ex) {
							Log.Fatal(__Res.GetString(__Res.MessageServer_StartError), ex);
						}

						_handlers.Add(new AmfRequestHandler(this));
						_handlers.Add(new StreamingAmfRequestHandler(this));
						_handlers.Add(new RtmptRequestHandler(this));
						_handlers.Add(new JsonRpcRequestHandler(this));
						_initialized = true;
					}
				}
			}

			//Wire up the HttpApplication events.
			//
			//BeginRequest 
			//AuthenticateRequest 
			//AuthorizeRequest 
			//ResolveRequestCache 
			//A handler (a page corresponding to the request URL) is created at this point.
			//AcquireRequestState ** Session State ** 
			//PreRequestHandlerExecute 
			//[The handler is executed.] 
			//PostRequestHandlerExecute 
			//ReleaseRequestState 
			//Response filters, if any, filter the output.
			//UpdateRequestCache 
			//EndRequest 

			application.BeginRequest += ApplicationBeginRequest;
			if (!FluorineConfiguration.Instance.FluorineSettings.Runtime.AsyncHandler) {
				application.PreRequestHandlerExecute += ApplicationPreRequestHandlerExecute;
			} else {
				application.AddOnPreRequestHandlerExecuteAsync(BeginPreRequestHandlerExecute, EndPreRequestHandlerExecute);
			}

			application.AuthenticateRequest += ApplicationAuthenticateRequest;

			//This implementation hooks the ReleaseRequestState and PreSendRequestHeaders events to 
			//figure out as late as possible if we should install the filter.
			//The Post Release Request State is the event most fitted for the task of adding a filter
			//Everything else is too soon or too late. At this point in the execution phase the entire 
			//response content is created and the page has fully executed but still has a few modules to go through
			//from an ASP.NET perspective.  We filter the content here and all of the javascript renders correctly.
			//application.PostReleaseRequestState += new EventHandler(this.CompressContent);
			application.ReleaseRequestState += ApplicationReleaseRequestState;
			application.PreSendRequestHeaders += ApplicationPreSendRequestHeaders;
			application.EndRequest += ApplicationEndRequest;
		}
Exemple #4
0
		/// <summary>
		/// Stops the message server.
		/// </summary>
		private void Stop() {
			lock (_objLock) {
				if (_messageServer != null)
					_messageServer.Stop();
				_messageServer = null;
				Log.Info("Stopped GodLesZ.Library.Amf Gateway");
			}
		}