The current implementation will always try to use the http client and then fall back to the file writing client. There's no point in trying to use the file writer in case the archive upload dir doesn't exist. Same for the other way around in case there's on token/SSLContext/setuid binary (although I'm not sure that scenario even makes sense)
It might make sense only adding clients that are ready to send. If there aren't any, then the entire service might as well be stopped, skipping the report generation etc..
I know that for the initial implementation this doesn't really matter, as the clients should always be ready for the installations we're targeting. But it becomes relevant once we're able to issue certificates outside of the SM.