⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cms_srv.hh

📁 Source code for an Numeric Cmputer
💻 HH
字号:
/********************************************************************* Description: cms_srv.hh*   C++ Header file for server that reads and writes to a local CMS*   buffer for remote processes.**   Derived from a work by Fred Proctor & Will Shackleford** Author:* License: LGPL Version 2* System: Linux*    * Copyright (c) 2004 All rights reserved.** Last change: * $Revision: 1.5 $* $Author: paul_c $* $Date: 2005/05/23 16:34:11 $********************************************************************//************************************************************************** File:cms_srv.hh* Authors: Fred Proctor, Will Shackleford* Purpose: * Includes:*          1. class CMS_SERVER*          2. class CMS_SERVER_LOCAL_PORT*************************************************************************/#ifndef CMS_SERVER_HH#define CMS_SERVER_HH#include "cms_user.hh"		/* class CMS, CMS_STATUS */#include "cms_cfg.hh"		/* CMS_CONFIG_LINELEN */#include "linklist.hh"		/* class LinkedList */#include "rem_msg.hh"		/* struct REMOTE_READ_REQUEST, */				/* struct REMOTE_WRITE_REQUEST, */extern int cms_server_count;extern void wait_for_servers(int);extern LinkedList *cms_server_list;class CMS_SERVER;class CMS_DIAG_PROC_INFO;class CMS_SERVER_LOCAL_PORT:public virtual CMS_USER {  protected:    long buffer_number;    int list_id;    friend class CMS_SERVER;    CMS_DIAG_PROC_INFO *orig_info;    /* virtual functions for accessing local buffer. */    virtual REMOTE_READ_REPLY *reader(REMOTE_READ_REQUEST * req);    virtual REMOTE_READ_REPLY *blocking_read(REMOTE_READ_REQUEST * req);    virtual REMOTE_WRITE_REPLY *writer(REMOTE_WRITE_REQUEST * buf);    virtual REMOTE_SET_DIAG_INFO_REPLY	* set_diag_info(REMOTE_SET_DIAG_INFO_REQUEST * buf);    virtual REMOTE_GET_DIAG_INFO_REPLY	* get_diag_info(REMOTE_GET_DIAG_INFO_REQUEST * buf);    virtual REMOTE_GET_MSG_COUNT_REPLY	* get_msg_count(REMOTE_GET_DIAG_INFO_REQUEST * buf);    virtual void reset_diag_info();    REMOTE_READ_REPLY read_reply;    REMOTE_WRITE_REPLY write_reply;    REMOTE_GET_BUF_NAME_REPLY namereply;    REMOTE_GET_DIAG_INFO_REPLY get_diag_info_reply;  public:      CMS_SERVER_LOCAL_PORT(CMS * _cms);      virtual ~ CMS_SERVER_LOCAL_PORT();    int local_channel_reused;};class CMS_USER_INFO;struct CMS_USER_CONNECT_STRUCT {    CMS_USER_CONNECT_STRUCT();    CMS_USER_INFO *user_info;    int fd;};class CMS_SERVER_REMOTE_PORT {  public:    CMS_SERVER_REMOTE_PORT(CMS_SERVER *);    virtual ~ CMS_SERVER_REMOTE_PORT();    virtual void run() = 0;    virtual void register_port();    virtual void unregister_port();    virtual int accept_local_port_cms(CMS * cms);    int port_registered;    CMS_USER_INFO *current_user_info;    CMS_USER_INFO *get_connected_user(int);    void add_connected_user(int);  protected:      LinkedList * connected_users;    CMS_USER_CONNECT_STRUCT *current_connected_user_struct;    CMS_SERVER *cms_server_parent;    static CMS_SERVER *find_server(long _pid, long _tid = 0);    static void print_servers();    friend class CMS_SERVER;    double min_compatible_version;    int confirm_write;  public:    int running;    int max_total_subdivisions;    int port_num;    int max_clients;    int current_clients;};class CMS_SERVER {  public:    REMOTE_CMS_REQUEST *request;    int server_spawned;    int server_registered;    int list_id;    LinkedList *cms_local_ports;    CMS_SERVER_LOCAL_PORT *find_local_port(long _buffer_num);    REMOTE_CHECK_IF_READ_REPLY cir_reply;    REMOTE_GET_MSG_COUNT_REPLY gmc_reply;    REMOTE_GET_QUEUE_LENGTH_REPLY gql_reply;    REMOTE_GET_SPACE_AVAILABLE_REPLY gsa_reply;    REMOTE_CLEAR_REPLY clear_reply_struct;    int using_passwd_file;    int get_access_type();    long get_message_type();    const char *get_buffer_name(int _buf_num);    int requests_processed;//    void read_passwd_file();  public:    int get_total_subdivisions(long _buffer_num);    CMS_SERVER_REMOTE_PORT *remote_port;    void gen_random_key(char key[], int len);    int security_check(CMS_USER_INFO * user_info, int _buf_num);    int is_using_passwd_file();    CMS_USER_INFO *get_user_info(const char *name, const char *passwd);//    int get_user_keys(const char *name, char *key1, char *key2);    static void clean(int);    long current_pid;    long current_tid;    long creator_pid;    long creator_tid;    long spawner_pid;    long spawner_tid;    long server_pid;    long server_tid;    long maximum_cms_size;    REMOTE_CMS_REPLY *process_request(REMOTE_CMS_REQUEST *);    void register_server(int setup_CC_signal_handler = 1);    void unregister_server();    void run(int setup_CC_signal_handler = 1);    int spawn();    void kill_server();      CMS_SERVER();    void add_local_port(CMS_SERVER_LOCAL_PORT *);    void delete_all_local_ports();    virtual void delete_from_list();      virtual ~ CMS_SERVER();    virtual void initialize_write_request_space();    virtual int accept_local_port_cms(CMS *);    REMOTE_READ_REQUEST read_req;    REMOTE_WRITE_REQUEST write_req;    REMOTE_GET_KEYS_REQUEST get_keys_req;    REMOTE_LOGIN_REQUEST login_req;    REMOTE_SET_SUBSCRIPTION_REQUEST set_subscription_req;    REMOTE_CHECK_IF_READ_REQUEST check_if_read_req;    REMOTE_GET_MSG_COUNT_REQUEST get_msg_count_req;    REMOTE_GET_QUEUE_LENGTH_REQUEST get_queue_length_req;    REMOTE_GET_SPACE_AVAILABLE_REQUEST get_space_available_req;    REMOTE_CLEAR_REQUEST clear_req;    REMOTE_SET_DIAG_INFO_REQUEST set_diag_info_req;    REMOTE_GET_DIAG_INFO_REQUEST get_diag_info_req;    REMOTE_READ_REPLY *read_reply;    REMOTE_WRITE_REPLY *write_reply;    REMOTE_GET_KEYS_REPLY *get_keys_reply;    REMOTE_GET_KEYS_REPLY perm_get_keys_reply;    REMOTE_LOGIN_REPLY *login_reply;    REMOTE_LOGIN_REPLY perm_login_reply;    REMOTE_SET_SUBSCRIPTION_REPLY *set_subscription_reply;    REMOTE_SET_SUBSCRIPTION_REPLY perm_set_subscription_reply;    REMOTE_CHECK_IF_READ_REPLY *check_if_read_reply;    REMOTE_GET_MSG_COUNT_REPLY *get_msg_count_reply;    REMOTE_GET_QUEUE_LENGTH_REPLY *get_queue_length_reply;    REMOTE_GET_SPACE_AVAILABLE_REPLY *get_space_available_reply;    REMOTE_CLEAR_REPLY *clear_reply;    REMOTE_SET_DIAG_INFO_REPLY *set_diag_info_reply;    REMOTE_GET_DIAG_INFO_REPLY *get_diag_info_reply;    CMS_SERVER_LOCAL_PORT *last_local_port_used;    int diag_enabled;    char set_diag_info_buf[0x400];    int max_total_subdivisions;    virtual void set_diag_info(REMOTE_SET_DIAG_INFO_REQUEST * _diag_info);    virtual void reset_diag_info(int buffer_number);  private:    double time_of_last_key_request;    LinkedList *known_users;    char passwd_file[256];    CMS_USER_INFO *find_user(const char *);    int guest_can_read;    int guest_can_write;};extern int (*detailed_security_check) (const char *user_name,    const char *buffer_name, long msg_type, int access_type);#endif /* !CMS_SERVER_HH */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -