director.cpp 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. #include "director.h"
  2. Director::Director(Session &s) : session{s} {
  3. server_line_(nullptr);
  4. server_prompt_(nullptr);
  5. client_input_(nullptr);
  6. to_client_ = true;
  7. }
  8. void Director::server_line(const std::string &line) {
  9. if (server_line_)
  10. server_line_(line);
  11. }
  12. void Director::server_prompt(const std::string &prompt) {
  13. if (server_prompt_)
  14. server_prompt_(prompt);
  15. }
  16. void Director::client_input(const std::string &input) {
  17. if (client_input_)
  18. client_input_(input);
  19. }
  20. // These would be called by the Dispatch --
  21. // since it has direct access to us.
  22. void Director::to_server(const std::string &send) { session.to_server(send); }
  23. void Director::to_client(const std::string &send) { session.to_client(send); }
  24. const std::string &Director::get_prompt(void) { return session.get_prompt(); }
  25. void Director::set_server_line(stringFunc new_sl) { server_line_ = new_sl; }
  26. void Director::set_server_prompt(stringFunc new_sp) { server_prompt_ = new_sp; }
  27. void Director::set_client_input(stringFunc new_ci) { client_input_ = new_ci; }
  28. OldValues Director::get_state(void) {
  29. OldValues values;
  30. values.server_line = server_line_;
  31. values.server_prompt = server_prompt_;
  32. values.client_input = client_input_;
  33. values.to_client = to_client_;
  34. server_line_(nullptr);
  35. server_prompt_(nullptr);
  36. client_input_(nullptr);
  37. to_client_ = false;
  38. return values;
  39. }
  40. void Director::restore_state(OldValues v) {
  41. server_line_ = v.server_line;
  42. server_prompt_ = v.server_prompt;
  43. client_input_ = v.client_input;
  44. to_client_ = v.to_client;
  45. }