Example #1
0
        public void Connect(string host, int port, string username, string password, bool createNewUser)

        {
            if (networkClient != null)
            {
                Disconnect();
            }

            networkClient = NetworkClient.Connect(host, port);

            if (createNewUser)
            {
                networkClient.WriteMessage(Message.Create(MessageType.CreateUserRequest,
                                                          new UserInfo()
                {
                    Username = username,
                    Password = password
                }));
                var createUserResponse = networkClient.ReadMessage().GetData <SimpleResponse>();
                if (!createUserResponse.Success)
                {
                    OnConnected(false, createUserResponse.Message);
                    return;
                }
            }

            networkClient.WriteMessage(Message.Create(MessageType.CredentialRequest, new UserInfo()
            {
                Username = username, Password = password
            }));
            var response = networkClient.ReadMessage().GetData <UserCredentialResponse>();

            if (response.IsAuthenticated)
            {
                networkClient.UserSession = response.UserSession;

                Task.Factory.StartNew(() =>
                {
                    StartReading();

                    // handle disconnecting client if client is in bad state
                    Disconnect();
                }, TaskCreationOptions.LongRunning);

                soundEngine.Record();
                OnConnected(true, response.Message);
                networkClient.WriteMessage(Message.Create(MessageType.GetAllChannelsRequest));
            }
            else
            {
                OnConnected(false, response.Message);
                networkClient.Disconnect();
            }
        }