bool thClonePort_HandlerDetached(TrafficHandlerPort sender, TrafficHandlerPort attacher) { if (sender != ClonePort) { throw new InvalidOperationException("The Clone Port detach event was signalled by another sender than the Clone Port. This is a serious internal error."); } TrafficSplitter s = (TrafficSplitter)TrafficHandler; if (attacher.ParentHandler is TrafficAnalyzer) { if (s.ContainsTrafficAnalyzer((TrafficAnalyzer)attacher.ParentHandler)) { s.RemoveTrafficAnalyzer((TrafficAnalyzer)attacher.ParentHandler); return(true); } else { throw new InvalidOperationException("The ports " + sender.Name + " and " + attacher.Name + " are not connected."); } } else { throw new InvalidOperationException("Only traffic analyzers can connect the " + ClonePort.Name + "."); } }
bool thClonePort_HandlerStatusCallback(TrafficHandlerPort sender, TrafficHandlerPort attacher) { if (sender != ClonePort) { throw new InvalidOperationException("The Clone Port query callback was called by another sender than the Clone Port. This is a serious internal error."); } TrafficSplitter s = (TrafficSplitter)TrafficHandler; return(attacher.ParentHandler is TrafficAnalyzer && s.ContainsTrafficAnalyzer((TrafficAnalyzer)attacher.ParentHandler)); }