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

📄 cygserver.h

📁 cygwin, 著名的在win32下模拟unix操作系统的东东
💻 H
字号:
/* cygserver.h   Copyright 2001, 2002 Red Hat Inc.   Written by Egor Duda <deo@logos-m.ru>This file is part of Cygwin.This software is a copyrighted work licensed under the terms of theCygwin license.  Please consult the file "CYGWIN_LICENSE" fordetails. */#ifndef _CYGSERVER_H_#define _CYGSERVER_H_#ifdef __GNUC__#define CYGSERVER_PACKED __attribute__ ((packed))#else#define CYGSERVER_PACKED#endif#define CYGWIN_SERVER_VERSION_MAJOR	1#define CYGWIN_SERVER_VERSION_API	1#define CYGWIN_SERVER_VERSION_MINOR	0#define CYGWIN_SERVER_VERSION_PATCH	0typedef enum {  CYGSERVER_UNKNOWN = 0,  CYGSERVER_OK,  CYGSERVER_UNAVAIL} cygserver_states;/*---------------------------------------------------------------------------* * class client_request *---------------------------------------------------------------------------*/class transport_layer_base;#ifndef __INSIDE_CYGWIN__class process_cache;#endifclass client_request{protected:  typedef enum {    CYGSERVER_REQUEST_INVALID,    CYGSERVER_REQUEST_GET_VERSION,    CYGSERVER_REQUEST_SHUTDOWN,    CYGSERVER_REQUEST_ATTACH_TTY,    CYGSERVER_REQUEST_SHM,    CYGSERVER_REQUEST_LAST  } request_code_t;  struct header_t  {    size_t msglen;    union    {      request_code_t request_code;      ssize_t error_code;    };    header_t () {};    header_t (request_code_t, size_t);  } CYGSERVER_PACKED;public:#ifndef __INSIDE_CYGWIN__  static void handle_request (transport_layer_base *, process_cache *);#endif  client_request (request_code_t request_code,		  void *buf = NULL,		  size_t bufsiz = 0);  virtual ~client_request ();  request_code_t request_code () const { return _header.request_code; }  ssize_t error_code () const { return _header.error_code; };  void error_code (ssize_t error_code) { _header.error_code = error_code; };  size_t msglen () const { return _header.msglen; };  void msglen (size_t len) { _header.msglen = len; };  int make_request ();protected:  virtual void send (transport_layer_base *);private:  header_t _header;  void * const _buf;  const size_t _buflen;#ifndef __INSIDE_CYGWIN__  void handle (transport_layer_base *, process_cache *);  virtual void serve (transport_layer_base *, process_cache *) = 0;#endif};/*---------------------------------------------------------------------------* * class client_request_get_version *---------------------------------------------------------------------------*/class client_request_get_version : public client_request{private:  struct request_get_version  {    DWORD major, api, minor, patch;  } CYGSERVER_PACKED;public:  client_request_get_version ();  bool check_version () const;private:  struct request_get_version version;#ifndef __INSIDE_CYGWIN__  virtual void serve (transport_layer_base *, process_cache *);#endif};/*---------------------------------------------------------------------------* * class client_request_shutdown * * Nb. This whole class is only !__INSIDE_CYGWIN__ since it is used * solely by cygserver itself. *---------------------------------------------------------------------------*/#ifndef __INSIDE_CYGWIN__class client_request_shutdown : public client_request{public:  client_request_shutdown ();private:  virtual void serve (transport_layer_base *, process_cache *);};#endif /* !__INSIDE_CYGWIN__ *//*---------------------------------------------------------------------------* * class client_request_attach_tty *---------------------------------------------------------------------------*/class client_request_attach_tty : public client_request{private:  struct request_attach_tty  {    DWORD pid, master_pid;    HANDLE from_master, to_master;  } CYGSERVER_PACKED;public:#ifdef __INSIDE_CYGWIN__  client_request_attach_tty (DWORD nmaster_pid,			     HANDLE nfrom_master, HANDLE nto_master);#else  client_request_attach_tty ();#endif  HANDLE from_master () const { return req.from_master; };  HANDLE to_master () const { return req.to_master; };protected:  virtual void send (transport_layer_base *);private:  struct request_attach_tty req;#ifndef __INSIDE_CYGWIN__  virtual void serve (transport_layer_base *, process_cache *);#endif};extern bool check_cygserver_available ();extern void cygserver_init ();#endif /* _CYGSERVER_H_ */

⌨️ 快捷键说明

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