internal void InstallEvents() { Dispatch.Install <HTML_BrowserReady_t>(x => OnBrowserReady?.Invoke(new Browser(x.UnBrowserHandle))); Dispatch.Install <HTML_StartRequest_t>(x => OnStartRequest?.Invoke(new Browser(x.UnBrowserHandle), x.PchURL, x.PchTarget, x.PchPostData, x.BIsRedirect)); Dispatch.Install <HTML_JSAlert_t>(x => OnJSAlert?.Invoke(new Browser(x.UnBrowserHandle), x.PchMessage)); Dispatch.Install <HTML_JSConfirm_t>(x => OnJSConfirm?.Invoke(new Browser(x.UnBrowserHandle), x.PchMessage)); Dispatch.Install <HTML_FileOpenDialog_t>(x => OnFileOpenDialog?.Invoke(new Browser(x.UnBrowserHandle), x.PchTitle, x.PchInitialFile)); Dispatch.Install <HTML_FinishedRequest_t>(x => OnFinishedLoading?.Invoke(new Browser(x.UnBrowserHandle), x.PchURL, x.PchPageTitle)); Dispatch.Install <HTML_NeedsPaint_t>(x => OnNeedsPaint?.Invoke(new Browser(x.UnBrowserHandle), new BrowserPaint(x))); Dispatch.Install <HTML_NewWindow_t>(x => OnNewWindow?.Invoke(new Browser(x.UnBrowserHandle), new BrowserNewWindow(x))); Dispatch.Install <HTML_OpenLinkInNewTab_t>(x => OnNewTab?.Invoke(new Browser(x.UnBrowserHandle), x.PchURL)); Dispatch.Install <HTML_StatusText_t>(x => OnStatusText?.Invoke(new Browser(x.UnBrowserHandle), x.PchMsg)); }
internal void HandleIncomingMessage(BreweryMessage message) { LastMessage = DateTime.Now; m_receiptStamps.AddOrUpdate(message.MessageType, m_stopwatch.ElapsedTicks, (messageType, oldValue) => m_stopwatch.ElapsedTicks); try { switch (message.MessageType) { case BreweryMessageType.Settings: Settings = (message as SettingsBreweryMessage).Settings; OnSettingsReceived?.Invoke(this, new BreweryEventArgs() { Brewery = this }); break; case BreweryMessageType.State: RemoteState = (message as StateBreweryMessage).CurrentState; OnStateReceived?.Invoke(this, new BreweryEventArgs() { Brewery = this }); break; case BreweryMessageType.SSIDs: Networks = (message as SsidBreweryMessage).Networks.ToList(); OnNetworksReceived?.Invoke(this, new BreweryEventArgs() { Brewery = this }); break; case BreweryMessageType.AllInfo: AllInfoBreweryMessage allInfo = message as AllInfoBreweryMessage; Settings = allInfo.SettingsMessage().Settings; RemoteState = allInfo.StateMessage().CurrentState; Networks = allInfo.SsidsMessage().Networks.ToList(); OnRefreshComplete?.Invoke(this, new BreweryEventArgs() { Brewery = this }); OnSettingsReceived?.Invoke(this, new BreweryEventArgs() { Brewery = this }); OnNetworksReceived?.Invoke(this, new BreweryEventArgs() { Brewery = this }); OnStateReceived?.Invoke(this, new BreweryEventArgs() { Brewery = this }); break; case BreweryMessageType.Pong: OnPongReceived?.Invoke(this, new BreweryEventArgs() { Brewery = this }); break; case BreweryMessageType.StatusTxt: OnStatusText?.Invoke(this, new BreweryStatusTextEventArgs() { Brewery = this, Message = (message as StatusTextBreweryMessage).Data }); break; case BreweryMessageType.Goodbye: OnGoodbye?.Invoke(this, new BreweryEventArgs() { Brewery = this }); break; } } catch (Exception ex) { Mantis.Error("{0} ignoring brewery delegate exception from message: {1} exception: {2}", ID, message.MessageType, ex); } if (message is IncomingMessage) { try { OnNetworkMessage?.Invoke(this, new BreweryNetworkEventArgs() { Brewery = this, Message = message as IncomingMessage }); } catch (Exception ex) { Mantis.Error("{0} ignoring brewery delegate exception from network delegate, message: {1} exception: {2}", ID, message.MessageType, ex); } } }