Class AbstractSession<T extends SessionKernel>

    • Field Detail

      • pages

        protected final java.util.Map<java.lang.String,​PageModel> pages
        Collection of active pages. Key of this map is the "page id" (a string). In the non-designer session, a perspective application may be running across multiple browser tabs. Each tab is its own "page" and has its own page id
      • props

        protected java.util.Map<PropertyType,​PropertyTree> props
        Holds session.props and session.custom property trees.
    • Method Detail

      • getPropertyTreeOf

        @Nullable
        public PropertyTree getPropertyTreeOf​(@Nullable
                                              PropertyType propertyType)
        Description copied from interface: PropertyTreeOwner
        Fetch the PropertyTree associated with the given PropertyType
        Parameters:
        propertyType - The PropertyType of the PropertyTree we want to fetch
        Returns:
        The PropertyTree or null if this PropertyTreeOwner does not manage a PropertyTree for the given PropertyType or if a null PropertyType is given
      • sendSessionKeepalive

        protected void sendSessionKeepalive()
      • updateSessionProps

        public void updateSessionProps​(SessionPropsConfig config)
        Description copied from interface: InternalSession
        Update the props and bindings associated with this session
        Parameters:
        config - the session props config to apply
      • findPage

        public java.util.Optional<PageModel> findPage​(java.lang.String pageId)
        Description copied from interface: Session
        Find the Page associated with the given page ID
        Parameters:
        pageId - the page ID associated with the target page
        Returns:
        the page associated with the given page ID if it exists
      • getPages

        public java.util.List<PageModel> getPages()
        Returns:
        A list of all open pages for this session
      • getLocale

        public java.util.Locale getLocale()
        Description copied from interface: InternalSession
        The current locale for this session, or a safe default Locale.getDefault() if not available.
      • getTimeZoneId

        public java.lang.String getTimeZoneId()
        Description copied from interface: InternalSession
        The current timezone id for this session, or a safe default if not available.
      • onKeepaliveReceived

        public void onKeepaliveReceived​(java.lang.String pageId,
                                        long timestamp)
        Description copied from interface: InternalSession
        Called by the client to keep the session alive.
        Parameters:
        pageId - the page ID of the page which triggered the keep alive request
        timestamp - the timestamp associated with the keep alive request
      • getPageReport

        public com.inductiveautomation.ignition.common.gson.JsonArray getPageReport()
        Collects the "brief report " json structure of each running page in this session.
      • getOrCreatePage

        @Nonnull
        public PageModel getOrCreatePage​(@Nonnull
                                         java.lang.String pageId)
        Returns a page for the given key, where the key itself is relevant to the session scope. For instance, the key used to get a page from a client project session will be a tab id. In the designer, each view open for editing is its own "session", and the designer derives a pageid based on the project resource id
        Parameters:
        pageId - the page ID associated with the target page
        Returns:
        an instantiated page with the matching key.
      • newPage

        @Nonnull
        protected PageModel newPage​(@Nonnull
                                    java.lang.String pageId)
      • onSessionInit

        public void onSessionInit​(com.inductiveautomation.ignition.common.gson.JsonObject sessionInitResponse)
        Called when when handling the session-init message. Gives the project session a chance to add things to the response
        Parameters:
        sessionInitResponse - the response JSON object to be passed back to the client in response to the session-init call
      • receive

        public void receive​(MessageChannel channel,
                            java.lang.String protocol,
                            java.io.Reader payload)
        Description copied from interface: InternalSession
        Called when this session has received a message from the message channel.
        Parameters:
        channel - the MessageChannel from which the message was received
        protocol - the protocol of the message
        payload - the payload of the message
      • notifyConnected

        public void notifyConnected​(MessageChannel channel)
        Should notify PageModels which are associated with this channel that the websocket has connected. May be used to determine that a client has established a first-time connection and requires the allocation and startup of view resources. This call may be re-entrant as socket connections are re-established.
        Parameters:
        channel - the newly connected message channel that may provide any needed tab/session specific information
      • notifyDisconnected

        public void notifyDisconnected​(MessageChannel channel)
        Called when a message channel has disconnected.
        Parameters:
        channel - the channel that was disconnected.
      • maybeScheduleReaper

        protected abstract void maybeScheduleReaper()
        Call this when it's possible the last page has been closed. The session will then schedule the reaper to close the session itself (runtime sessions only, designer sessions don't reap in this way)
      • closePage

        public void closePage​(java.lang.String pageId)
        Description copied from interface: InternalSession
        Shuts down and removes the page associated with the given page ID which will disconnect the associated message channel (if one is connected).
        Parameters:
        pageId - the page ID associated with the target page
      • closePage

        public void closePage​(java.lang.String pageId,
                              @Nullable
                              java.lang.String message)
        Description copied from interface: InternalSession
        Shuts down and removes the page associated with the given page ID which will disconnect the associated message channel (if one is connected). Moves the client to a terminal state page of closed with the given message.
        Parameters:
        pageId - the page ID associated with the target page
        message - the message displayed to the client on the terminal state page
      • broadcast

        protected void broadcast​(java.lang.String protocol,
                                 java.lang.String payload)
        Description copied from class: SessionKernelWrapper
        Broadcast a message to all pages associated with this session
        Specified by:
        broadcast in class SessionKernelWrapper<T extends SessionKernel>
        Parameters:
        protocol - the protocol of the message to broadcast
        payload - the payload of the message to broadcast
      • refreshBinding

        public void refreshBinding​(PropertyKey property)
        Description copied from interface: Session
        Refresh the binding for the given property
        Parameters:
        property - the property which has the binding to refresh