public static Frame CreateConnect(
            string acceptVersion,
            string host = null,
            string login = null,
            string passcode = null,
            Heartbeat heartbeat = null,
            IEnumerable<KeyValuePair<string, string>> extraHeaders = null)
        {
            // This should be commented when multiversion is implemented.
            if (host == null)
                throw new ArgumentNullException("host");

            var headers = new List<KeyValuePair<string, string>>(5);
            headers.Add(new KeyValuePair<string, string>(StompHeaders.AcceptVersion, acceptVersion));
            /*if (host != null)*/ headers.Add(new KeyValuePair<string, string>(StompHeaders.Host, host));
            if (login != null) headers.Add(new KeyValuePair<string, string>(StompHeaders.Login, login));
            if (passcode != null) headers.Add(new KeyValuePair<string, string>(StompHeaders.Passcode, passcode));
            if (heartbeat != null) headers.Add(new KeyValuePair<string, string>(StompHeaders.Heartbeat, heartbeat.RawHeartbeat));

            return new Frame(StompCommands.Connect, extraHeaders == null ? headers : headers.Concat(extraHeaders));
        }
 public static Task WriteConnectAsync(
     this IStompFrameWriter writer,
     string host = null,
     string login = null,
     string passcode = null,
     Heartbeat heartbeat = null,
     IEnumerable<KeyValuePair<string, string>> extraHeaders = null,
     CancellationToken? cancellationToken = null)
 {
     CancellationToken cancelToken = cancellationToken ?? CancellationToken.None;
     Frame frame = StompFrameFactory.CreateConnect(writer.ProtocolVersion, host, login, passcode, heartbeat, extraHeaders);
     return writer.WriteAsync(frame, cancelToken);
 }