filter.go
changeset 126 367e76b3028e
parent 125 f464f14e39a7
child 127 a8f9a0c07fc8
--- a/filter.go	Mon Sep 02 20:46:23 2013 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,64 +0,0 @@
-package xmpp
-
-// Manages the stack of filters that can read and modify stanzas on
-// their way from the remote to the application.
-
-// Receive new filters on filterAdd; those new filters get added to
-// the top of the stack. Receive stanzas at the bottom of the stack on
-// input. Send stanzas out the top of the stack on output.
-func filterMgr(filterAdd <-chan Filter, input <-chan Stanza, output chan<- Stanza) {
-	botFiltIn := output
-	topFiltOut := input
-
-loop:
-	for {
-		select {
-		case stan, ok := <-input:
-			if !ok {
-				break loop
-			}
-			botFiltIn <- stan
-
-		case stan, ok := <-topFiltOut:
-			if !ok {
-				break loop
-			}
-			output <- stan
-
-		case filt := <-filterAdd:
-			newTop := make(chan Stanza)
-			go filt(topFiltOut, newTop)
-			topFiltOut = newTop
-		}
-	}
-	close(botFiltIn)
-}
-
-// Starts the filter chain. Filters will all interpose themselves
-// between srvIn and cliOut.
-func (cl *Client) startFilters(srvIn, cliIn <-chan Stanza) (<-chan Stanza, <-chan Stanza) {
-	cliOut := make(chan Stanza)
-	srvOut := make(chan Stanza)
-	go filterMgr(cl.sendFilterAdd, srvIn, cliOut)
-	go filterMgr(cl.recvFilterAdd, cliIn, srvOut)
-	return cliOut, srvOut
-}
-
-// AddRecvFilter adds a new filter to the top of the stack through which
-// incoming stanzas travel on their way up to the client.
-func (cl *Client) AddRecvFilter(filt Filter) {
-	if filt == nil {
-		return
-	}
-	cl.recvFilterAdd <- filt
-}
-
-// AddSendFilter adds a new filter to the top of the stack through
-// which outgoing stanzas travel on their way down from the client to
-// the network.
-func (cl *Client) AddSendFilter(filt Filter) {
-	if filt == nil {
-		return
-	}
-	cl.sendFilterAdd <- filt
-}