/** * Remove this particular regex/subscriber pair (UNTESTED AND API MAY CHANGE). If regex is null, * all subscriptions for 'sub' are cancelled. If subscriber is null, any previous subscriptions * matching the regular expression will be cancelled. If both 'sub' and 'regex' are null, all * subscriptions will be cancelled. */ public void unsubscribe(String regex, ZCMSubscriber sub) { if (this.closed) throw new IllegalStateException(); synchronized (this) { for (Provider p : providers) p.unsubscribe(regex); } // TODO: providers don't seem to use anything beyond first channel synchronized (subscriptions) { // Find and remove subscriber from list for (Iterator<SubscriptionRecord> it = subscriptions.iterator(); it.hasNext(); ) { SubscriptionRecord sr = it.next(); if ((sub == null || sr.lcsub == sub) && (regex == null || sr.regex.equals(regex))) { it.remove(); } } // Find and remove subscriber from map for (String channel : subscriptionsMap.keySet()) { for (Iterator<SubscriptionRecord> it = subscriptionsMap.get(channel).iterator(); it.hasNext(); ) { SubscriptionRecord sr = it.next(); if ((sub == null || sr.lcsub == sub) && (regex == null || sr.regex.equals(regex))) { it.remove(); } } } } }
public void draw() { if (_pointLists.size() <= 0) return; pushStyle(); noFill(); PVector vec; PVector firstVec; PVector screenPos = new PVector(); int colorIndex = 0; // draw the hand lists Iterator<Map.Entry> itrList = _pointLists.entrySet().iterator(); while (itrList.hasNext()) { strokeWeight(2); stroke(_colorList[colorIndex % (_colorList.length - 1)]); ArrayList curList = (ArrayList) itrList.next().getValue(); // draw line firstVec = null; Iterator<PVector> itr = curList.iterator(); beginShape(); while (itr.hasNext()) { vec = itr.next(); if (firstVec == null) firstVec = vec; // calc the screen pos context.convertRealWorldToProjective(vec, screenPos); vertex(screenPos.x, screenPos.y); } endShape(); // draw current pos of the hand if (firstVec != null) { strokeWeight(8); context.convertRealWorldToProjective(firstVec, screenPos); point(screenPos.x, screenPos.y); } colorIndex++; } popStyle(); }
public JilterStatus eoh() { logger.debug("jilter eoh()"); // includeBCC is false if RCPT TO does not contain at least one field in TO, FROM and CC // this is a safety check as sometimes, RCPT TO is something differently entirely // and does not contain the actual recipients in the email MilterServerService milterService = Config.getConfig().getMilterServerService(); if (milterService.getIncludeBCC() && includeBCC) { logger.debug("including BCC addresses"); // check to see if address is flagged to ignore if (rcpts.size() > 0) { Iterator<String> i = rcpts.iterator(); while (i.hasNext()) { String rcpt = i.next(); if (shouldIgnoreBCCAddress(rcpt)) { logger.debug("ignore include bcc address {address='" + rcpt + "'}"); i.remove(); } } } if (rcpts.size() > 0) { try { for (int j = 0; j < rcpts.size(); j++) { if (j == 0) { bos.write("bcc: ".getBytes()); } else { bos.write(",".getBytes()); } bos.write(rcpts.get(j).getBytes()); } bos.write("\n".getBytes()); } catch (IOException io) { logger.error("jilter failed to write end of header data", io); } } } return JilterStatus.SMFIS_CONTINUE; }