Changeset 8076 for lang/c

Show
Ignore:
Timestamp:
03/18/08 18:09:49 (9 months ago)
Author:
frsyuki
Message:

lang/c/partty: added view-only host mode

Location:
lang/c/partty/trunk/src
Files:
4 modified

Legend:

Unmodified
Added
Removed
  • lang/c/partty/trunk/src/cmd_host.cc

    r7867 r8076  
    5757                << "     -w <oparation password>  password to operate the session\n" 
    5858                << "     -r <view-only password>  password to view the session\n" 
     59                << "     -k                       disable all gust operation regardless of operation password\n" 
    5960                << "     -c <lock character>      control key to lock guest operation (default: ']')\n" 
    6061                << "\n" 
     
    112113        std::string writable_password; 
    113114        std::string readonly_password; 
     115        bool view_only; 
    114116        char lock_char = ']'; 
    115117        bool session_name_set; 
     
    131133                kz.on("-w", "--password",  Accept::String(writable_password), writable_password_set); 
    132134                kz.on("-r", "--view-only", Accept::String(readonly_password), readonly_password_set); 
     135                kz.on("-k", "--locked",    Accept::Boolean(view_only)); 
    133136                kz.on("-c", "--lock",      Accept::Character(lock_char), lock_char_set); 
    134137                kz.on("-h", "--help",      Accept::Action(usage_action())); 
     
    243246                Partty::Host::config_t config(ssock, info); 
    244247                config.lock_code = lock_char - 'a' + 1;; 
     248                config.view_only = view_only; 
    245249                Partty::Host host(config); 
    246250                if( argc > 0 ) { 
  • lang/c/partty/trunk/src/host.cc

    r7867 r8076  
    7171        server(config.server_socket), 
    7272        m_lock_code(config.lock_code), m_locking(false), 
     73        m_view_only(config.view_only), 
    7374        m_info(config.info) {} 
    7475 
     
    223224        for(const char *p=shared_buffer, *p_end=p+len; p != p_end; ++p) { 
    224225                if(*p == m_lock_code) { 
    225                         m_locking = !m_locking; 
     226                        if(m_lock_code) { 
     227                                m_lock_code = false; 
     228                                std::cout << " *unlocked* " << std::flush; 
     229                        } else { 
     230                                m_lock_code = true; 
     231                                std::cout << " *locked* " << std::flush; 
     232                        } 
    226233                } 
    227234        } 
     
    237244                else { throw io_error("server connection is broken"); } 
    238245        } else if( len == 0 ) { throw io_end_error("server connection closed"); } 
    239         // ロック中ならServerからの入力は捨てる 
    240         if( m_locking ) { return 0; }  // XXX Telnetの返答も無視している 
     246        // view_onlyモードまたはロック中ならServerからの入力は捨てる 
     247        if( m_view_only || m_locking ) { return 0; }  // XXX Telnetの返答も無視している 
    241248        // Telnetフィルタ 
    242249        m_telnet.recv(shared_buffer, len); 
  • lang/c/partty/trunk/src/host.h

    r7867 r8076  
    4747        bool m_locking; 
    4848 
     49        bool m_view_only; 
     50 
    4951        session_info_t m_info; 
    5052private: 
  • lang/c/partty/trunk/src/partty.h

    r7867 r8076  
    295295                                const session_info_ref_t& info_) : 
    296296                        lock_code(0), 
     297                        view_only(false), 
    297298                        server_socket(_server_socket), 
    298299                        info(info_) {} 
    299300        public: 
    300301                int lock_code; 
     302                bool view_only; 
    301303        private: 
    302304                int server_socket;