/** * Starts all filters in order from application layer to the network layer. */ @Override public void start() { GridNioFilter ref = tail.nextFilter(); // Walk through the linked list and start all the filters. while (ref != head) { ref.start(); ref = ref.nextFilter(); } }
/** {@inheritDoc} */ @Override public String toString() { if (str == null) { StringBuilder res = new StringBuilder("FilterChain[filters=["); GridNioFilter ref = tail.nextFilter(); while (ref != head) { res.append(ref); ref = ref.nextFilter(); if (ref != head) res.append(", "); } res.append(']'); // It is OK if this variable will be rewritten concurrently. str = res.toString(); } return str; }
/** * Constructor. * * @param log Logger instance. * @param lsnr Listener for events passed through chain. * @param head First filter in chain, it expected to be connected to actual endpoint. * @param filters Filters applied between listener and head. Will be inserted in the same order, * so chain will look like (lsnr) -> (filters[0]) -> ... -> (filters[n]) -> (head). */ public GridNioFilterChain(IgniteLogger log, GridNioServerListener<T> lsnr, GridNioFilter head, GridNioFilter... filters) { super("FilterChain"); this.log = log; this.lsnr = lsnr; this.head = head; GridNioFilter prev; tail = prev = new TailFilter(); for (GridNioFilter filter : filters) { prev.nextFilter(filter); filter.previousFilter(prev); prev = filter; } prev.nextFilter(head); head.previousFilter(prev); }
/** * Starts all filters in order from application layer to the network layer. */ @Override public void start() { GridNioFilter ref = tail.nextFilter(); // Walk through the linked list and start all the filters. while (ref != head) { ref.start(); ref = ref.nextFilter(); } }
/** {@inheritDoc} */ @Override public String toString() { if (str == null) { StringBuilder res = new StringBuilder("FilterChain[filters=["); GridNioFilter ref = tail.nextFilter(); while (ref != head) { res.append(ref); ref = ref.nextFilter(); if (ref != head) res.append(", "); } res.append(']'); // It is OK if this variable will be rewritten concurrently. str = res.toString(); } return str; }
/** * Constructor. * * @param log Logger instance. * @param lsnr Listener for events passed through chain. * @param head First filter in chain, it expected to be connected to actual endpoint. * @param filters Filters applied between listener and head. Will be inserted in the same order, * so chain will look like (lsnr) -> (filters[0]) -> ... -> (filters[n]) -> (head). */ public GridNioFilterChain(IgniteLogger log, GridNioServerListener<T> lsnr, GridNioFilter head, GridNioFilter... filters) { super("FilterChain"); this.log = log; this.lsnr = lsnr; this.head = head; GridNioFilter prev; tail = prev = new TailFilter(); for (GridNioFilter filter : filters) { prev.nextFilter(filter); filter.previousFilter(prev); prev = filter; } prev.nextFilter(head); head.previousFilter(prev); }