亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? giopstrand.h

?? 編譯工具
?? H
字號:
// -*- Mode: C++; -*-//                            Package   : omniORB2// giopStrand.h               Created on: 05/01/2001//                            Author    : Sai Lai Lo (sll)////    Copyright (C) 2001 AT&T Laboratories Cambridge////    This file is part of the omniORB library////    The omniORB library is free software; you can redistribute it and/or//    modify it under the terms of the GNU Library General Public//    License as published by the Free Software Foundation; either//    version 2 of the License, or (at your option) any later version.////    This library is distributed in the hope that it will be useful,//    but WITHOUT ANY WARRANTY; without even the implied warranty of//    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU//    Library General Public License for more details.////    You should have received a copy of the GNU Library General Public//    License along with this library; if not, write to the Free//    Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA//    02111-1307, USA////// Description://	*** PROPRIETORY INTERFACE ***///*  $Log: giopStrand.h,v $  Revision 1.1.4.10  2002/08/21 06:23:15  dgrisby  Properly clean up bidir connections and ropes. Other small tweaks.  Revision 1.1.4.9  2001/09/19 17:26:46  dpg1  Full clean-up after orb->destroy().  Revision 1.1.4.8  2001/09/10 17:43:11  sll  Replaced the non-thread safe resetIdleCounter with startIdleCounter and  stopIdleCounter. Added orderly_closed to indicate that a stand is orderly  closed because a GIOP CloseConnection message has been received.  Revision 1.1.4.7  2001/08/29 17:51:06  sll  Updated description for gatekeeper_checked.  Revision 1.1.4.6  2001/08/17 17:10:05  sll  Modularise ORB configuration parameters.  Revision 1.1.4.5  2001/08/03 17:43:19  sll  Make sure dll import spec for win32 is properly done.  Revision 1.1.4.4  2001/07/31 16:28:01  sll  Added GIOP BiDir support.  Revision 1.1.4.3  2001/07/13 15:20:56  sll  New member safeDelete is now the only method to delete a strand.  Revision 1.1.4.2  2001/06/13 20:11:37  sll  Minor update to make the ORB compiles with MSVC++.  Revision 1.1.4.1  2001/04/18 17:19:00  sll  Big checkin with the brand new internal APIs.  Revision 1.1.2.1  2001/02/23 16:47:04  sll  Added new files.  */#ifndef __GIOPSTRAND_H__#define __GIOPSTRAND_H__#include <omniORB4/omniTransport.h>#ifdef _core_attr# error "A local CPP macro _core_attr has already been defined."#endif#if defined(_OMNIORB_LIBRARY)#     define _core_attr#else#     define _core_attr _OMNIORB_NTDLL_IMPORT#endifOMNI_NAMESPACE_BEGIN(omni)class giopStream;class giopStreamImpl;class giopWorker;class giopServer;class GIOP_S;struct giopStream_Buffer;////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////class giopStreamList {public:  giopStreamList* next;  giopStreamList* prev;  giopStreamList() {		next = this;		prev = this;	}  void insert(giopStreamList& head);  void remove();  static CORBA::Boolean is_empty(giopStreamList& head);private:  giopStreamList(const giopStreamList&);  giopStreamList& operator=(const giopStreamList&);};////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////class giopStrand : public Strand {public:  giopStrand(const giopAddress*);  // Ctor for an active strand. I.e. those that are used to connect to  // a remote address space.  // When a connection is establshed, the reference count goes to 1.  //  // No thread safety precondition  giopStrand(giopConnection*,giopServer*);  // Ctor for a passive strand. I.e. those that are created because a  // client has connected to this address space.  // Increment the reference count on the connection.  //  // No thread safety preconditionpublic:  CORBA::Boolean safeDelete(CORBA::Boolean forced = 0);  // This should be the *ONLY* method to call to delete a strand.  // Return TRUE if the strand can be considered deleted.  //  // The function checks if this connection is satisfied before it returns  // true:  //  //    giopStreamList::is_empty(clients) &&  //    giopStreamList::is_empty(servers) &&  //    giopStream::noLockWaiting(this)  //  // If the function returns true, the above condition becomes an invariant  // and should not be violated until the dtor of the strand is called.  //  // The <forced> flag, if set explicitly to 1, causes the function to  // skip checking for the above condition. Instead it just go ahead as if  // the condition is met. This flag is used for internal implementation  // and should not be used by any client of this class.  //  // Internally, the strand may stays on a bit longer until the connection's  // reference count goes to 0 as well.  //  // Thread Safety preconditions:  //    Caller must hold omniTransportLock unless forced == 1.private:  CORBA::Boolean pd_safelyDeleted;public:  CORBA::Boolean deletePending();  // Return true, if safeDelete() has been called and it returns true.  //  // If this method returns true, the following invariant is always true  // until the strand is deleted:   //  //    giopStreamList::is_empty(clients) &&  //    giopStreamList::is_empty(servers) &&  //    giopStream::noLockWaiting(this)  //  // The caller must not do anything that would cause the strand to violate  // this invariant. For example, attempt or wait to acquire a lock on the  // strand, or to queue any GIOP_S or GIOP_C object to the strand.  //  //   // Thread Safety preconditions:  //    Caller must hold omniTransportLock.  GIOP_S* acquireServer(giopWorker*);  // Acquire a GIOP_S from the strand. Normally this is only  done on  // passive strands. However, it can also be used for active strands when  // they become birectional, i.e. BiDir == 1.  //  // Return 0 if a GIOP_S cannot be acquired.  //  // Thread Safety preconditions:  //    Caller must not hold omniTransportLock, it is used internally for  //    synchronisation.  void   releaseServer(IOP_S*);  // Release the GIOP_S to the strand. The GIOP_S must have been acquired  // previously through acquireServer from this strand. Passing in a GIOP_S  // from a different strand would result in undefined behaviour.  //  // Thread Safety preconditions:  //    Caller must not hold omniTransportLock, it is used internally for  //    synchronisation.  enum State { ACTIVE,  // The strand is in active use	       DYING,   // Something terminally wrong has happened to the	                // strand, it should be removed at the earliest	                // convenient time.	       TIMEDOUT // This strand can still be used when required but       	                // it can also be removed if resources is scarce.  };  State state() const { return pd_state; }  // No thread safety precondition, use with extreme care  void state(State s) { pd_state = s; }  // No thread safety precondition, use with extreme care  /////////////////////////////////////////////////////////////////////////  CORBA::Boolean startIdleCounter();  // returns 1 if the idle counter has been successfully started.  // returns 0 if the idle counter is already active or has already expired.  //  // Thread Safety preconditions:  //    Caller must hold omniTransportLock.  CORBA::Boolean stopIdleCounter();  // returns 1 if the idle counter has been successfully stopped.  // returns 0 if the idle counter has already expired and cannot be reset.  // In the latter case, the caller should assume that the strand is about  // to be shutdown and hence should cleanup its usage accordingly.  //  // Thread Safety preconditions:  //    Caller must hold omniTransportLock.  ////////////////////////////////////////////////////////////////////////  // When idlebeats go to 0, the strand has been idle for a sufficently  // long time and should be deleted.  // This variable SHOULD NOT be manipulated outside the implementation of  // giopStrand.  CORBA::Long        idlebeats;  giopStreamList      servers;  giopStreamList      clients;  // a strand may have more than one giopStream instances associated with  // it. Mostly this is because from GIOP 1.2 onwards, requests can be  // interleaved on associated connection. Each of these request is  // represented by a giopStream instance. They are linked together by  // servers and clients.  //   servers - all the GIOP_S that is serving calls for this strand  //   clients - all the GIOP_C that is doing invocation using this strand  //  // Except when a strand is used to support bidirectional GIOP, only one of  // the list will be populated (because plain GIOP is asymetric and one  // end is either a client or a server but not both). With bidirectional GIOP,  // both list may be populated.  CORBA::Boolean      biDir;  // Indicate if the strand is used for bidirectional GIOP.  inline CORBA::Boolean isClient() { return (address != 0); }  // Return TRUE if this is an active strand on the client side. Unless  // biDir is TRUE, only those messages expected by a GIOP client can be  // received from this connection.  const giopAddress*  address;  // address is provided as ctor arg if this is a active strand, otherwise  // it is 0.  giopConnection*     connection;  // connection is provided as ctor arg if this is a passive strand  // otherwise it is obtained by address->connect().  giopServer*         server;  // server is provided as ctor arg if this is a passive strand  // otherwise it is 0.  CORBA::Boolean      gatekeeper_checked;  // only applies to passive strand. TRUE(1) means that the serverTransportRule  // has been checked. This flag is set by giopWorker and is  // not manipulated by the strand class.  CORBA::Boolean      first_use;  // only applies to active strand. TRUE(1) means this connection has  // not been used to carry an invocation before.  // This flag is set to 1 by ctor and reset to 0 by GIOP_C.  CORBA::Boolean      orderly_closed;  // only applies to active strand. TRUE(1) means a GIOP CloseConnection  // was received and cause the strand state to change to DYING.  // This flag is set to 0 by ctor and set to 1 by the giopImpl?? classes.  CORBA::Boolean      biDir_initiated;  // only applies to active strand. TRUE(1) means biDir service context  // has been sent for this connection.  // This flag is initialised to 0 by ctor and set to 1 by   // setBiDirServiceContext.  CORBA::Boolean      biDir_has_callbacks;  // only applies to active bidirectional strand. TRUE(1) means call back  // objects have been sent through this connection. In other words, the  // connection may receive invocations on these objects from the other  // end.  // This flag is initialised to 0 by ctor and set to 1 by   // omniObjRef::_marshal.  ////////////////////////////////////////////////////////////////////////  ////////////////////////////////////////////////////////////////////////  // The following are data structures used by the giopStream instances  // associated with this strand AND SHOULD NOT BE manipulated by the Strand  // class!!!  CORBA::Boolean      tcs_selected;  omniCodeSet::TCS_C* tcs_c;  omniCodeSet::TCS_W* tcs_w;  GIOP::Version       version;  giopStreamImpl*     giopImpl;  // The transmission codesets for char, wchar, string and wstring are  // selected by the client based on the codeset info in the IOR. The  // client informs the server of its selection using a codeset service  // context. This is done only once per lifetime of a connection (strand).  // If <tcs_selected> == 1,  //   <tcs_c>, <tcs_w> and <version> records the chosen code set convertors  //   and the GIOP version for which the convertors apply.  // conditional variables and counters to implement giopStream locking  // functions.  omni_tracedcondition rdcond;  int                  rd_nwaiting;  int                  rd_n_justwaiting;  omni_tracedcondition wrcond;  int                  wr_nwaiting;  CORBA::ULong newSeqNumber();  // Return a number suitable for use as the GIOP request id.  //  // Thread Safety preconditions:  //    Caller must hold omniTransportLock.private:  CORBA::ULong         seqNumber;  // monotonically increasing number to be used as the GIOP request id.public:  giopStream_Buffer*   head;  giopStream_Buffer*   spare;public:  static _core_attr StrandList  active;  static _core_attr StrandList  active_timedout;  static _core_attr StrandList  passive;  // Throughout the lifetime of a strand, it is a member of one and only one  // of the lists:  //   active           - the ORB uses this connection in the role of a client  //                      it is 'active' in the sense that the connection was  //                      initiated by this ORB  //   active_timedout  - the connection was previously active and has been  //                      idled for some time. It will be deleted soon.  //   passive          - the ORB uses this connection in the role of a server  //                      it is 'passive' because the connection was initiated  //                      by the remote party.  //  static _core_attr CORBA::ULong idleOutgoingBeats;  // Number to instantiate idlebeats when the active strand becomes idle.  static _core_attr CORBA::ULong idleIncomingBeats;  // idleIncomingBeats * scanPeriod == no. of sec. a passive strand should  // be allowed to stay idle.public:  void deleteStrandAndConnection(CORBA::Boolean forced=0);  // Decrement connection's reference count. If it goes to 0, delete  // this strand as well. This call ensures that both the strand and  // connection die at the same time.  //  // Thread Safety preconditions:  //    Caller must hold omniTransportLock unless forced == 1.#ifdef __GNUG__  friend class keep_gcc_happy;#endifprivate:  virtual ~giopStrand();  State pd_state;  giopStrand(const giopStrand&);  giopStrand& operator=(const giopStrand&);};OMNI_NAMESPACE_END(omni)#undef _core_attr#endif // __GIOPSTRAND_H__

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品一区二区在线观看| 国产精品一区二区不卡| 自拍偷自拍亚洲精品播放| 精品电影一区二区三区 | 久久久亚洲欧洲日产国码αv| 欧美日韩日日摸| 欧美高清一级片在线| 欧美视频精品在线观看| 7777精品伊人久久久大香线蕉的| 欧洲精品在线观看| 欧美一区二区三区免费视频| 91.麻豆视频| xfplay精品久久| 中文字幕一区二区三中文字幕| 亚洲人成亚洲人成在线观看图片| 亚洲国产欧美在线人成| 日韩电影在线免费| 国产乱码精品一区二区三区av | 成人免费看的视频| 91黄色免费版| 日韩一本二本av| 亚洲欧洲日韩在线| 日韩精品视频网站| 国产成人激情av| 欧美影视一区在线| 精品国产伦一区二区三区观看体验| 久久久国产综合精品女国产盗摄| 国产精品视频麻豆| 亚洲成av人片一区二区梦乃| 精品一区二区三区视频在线观看 | 色老汉av一区二区三区| 91精品国产黑色紧身裤美女| 国产午夜精品一区二区| 亚洲午夜一区二区| 国产夫妻精品视频| 欧美日韩一区二区三区在线看| 精品国产一二三区| 一二三区精品福利视频| 高清视频一区二区| 欧美一区二区三区色| 亚洲乱码国产乱码精品精98午夜 | 91精品在线一区二区| 国产精品毛片无遮挡高清| 免费成人小视频| 99久久99久久久精品齐齐| 日韩精品专区在线影院重磅| 亚洲人成精品久久久久久| 精品一区二区免费视频| 欧美日韩免费在线视频| 国产精品免费久久| 国产剧情一区二区| 欧美精品免费视频| 亚洲欧美乱综合| 国产成人av一区二区三区在线| 欧美丰满高潮xxxx喷水动漫| 一区二区三区**美女毛片| 国产91丝袜在线播放九色| 欧美一级爆毛片| 天堂va蜜桃一区二区三区漫画版| 99精品视频在线观看免费| 精品国产一区二区亚洲人成毛片| 日日摸夜夜添夜夜添精品视频| 91视频在线看| 亚洲丝袜美腿综合| 成人国产免费视频| 中文字幕制服丝袜一区二区三区| 国产精品99久| 久久久久久久久岛国免费| 国产在线麻豆精品观看| 精品成人佐山爱一区二区| 精品在线亚洲视频| 久久综合999| 国产乱对白刺激视频不卡| 久久久精品免费观看| 国产成人亚洲综合a∨婷婷图片| 久久女同精品一区二区| 国产美女精品在线| 欧美激情在线观看视频免费| 成人自拍视频在线观看| 国产亚洲欧美日韩俺去了| 粉嫩aⅴ一区二区三区四区五区| 久久久久久久久久电影| 成人国产电影网| 亚洲精品欧美专区| 欧美特级限制片免费在线观看| 亚洲大尺度视频在线观看| 欧美日韩精品是欧美日韩精品| 日本在线播放一区二区三区| 精品999在线播放| 国产成人综合精品三级| 日韩理论片一区二区| 欧美三级欧美一级| 久久超碰97人人做人人爱| 久久九九全国免费| 99国产精品国产精品毛片| 亚洲图片一区二区| 精品国产99国产精品| 波多野结衣中文字幕一区| 亚洲精品水蜜桃| 日韩欧美色综合| 成人黄色777网| 日韩av网站免费在线| 久久久五月婷婷| 日本韩国欧美国产| 六月丁香婷婷色狠狠久久| 国产欧美一区二区三区鸳鸯浴| 91福利在线播放| 精品午夜久久福利影院| 国产精品久久久久久亚洲伦| 欧美日韩一级视频| 成人免费看的视频| 免费观看一级特黄欧美大片| 国产精品第13页| 日韩视频在线永久播放| 99久久久免费精品国产一区二区| 热久久国产精品| 中文字幕亚洲不卡| 日韩欧美国产综合在线一区二区三区| 国产xxx精品视频大全| 奇米一区二区三区av| 亚洲激情男女视频| 国产欧美日韩视频在线观看| 欧美高清dvd| 色婷婷综合久色| 国产成人无遮挡在线视频| 强制捆绑调教一区二区| 亚洲一区在线观看免费| 中文字幕第一区综合| 欧美mv和日韩mv的网站| 欧美日韩国产精品自在自线| 成人免费高清视频| 国产一区二区三区不卡在线观看| 亚洲国产精品久久久久秋霞影院 | 美女一区二区久久| 亚洲精品欧美专区| 亚洲图片欧美激情| 欧美韩日一区二区三区四区| 日韩视频一区二区三区| 欧美一区二区三区爱爱| 欧美亚洲一区二区在线| 91在线观看免费视频| 成人黄色a**站在线观看| 国产精品亚洲成人| 国内一区二区视频| 韩国精品免费视频| 国产激情视频一区二区在线观看 | 欧美激情中文不卡| 国产日韩欧美综合一区| 久久久国产午夜精品| 久久人人97超碰com| 国产视频一区二区在线观看| 精品少妇一区二区三区日产乱码 | 色综合久久99| 日本高清成人免费播放| 日本韩国精品在线| 欧美日韩精品三区| 欧美乱妇15p| 制服丝袜日韩国产| 日韩午夜激情av| 精品成人a区在线观看| 亚洲精品一区二区三区福利| 精品国产一区二区三区av性色| 精品欧美一区二区三区精品久久| 日韩视频一区二区三区| 久久欧美中文字幕| 亚洲欧洲精品一区二区三区 | 91丨porny丨首页| 在线观看亚洲成人| 欧美精品在线观看一区二区| 欧美成人免费网站| 国产精品三级在线观看| 亚洲综合一二三区| 久久丁香综合五月国产三级网站| 国产综合久久久久久鬼色 | 奇米精品一区二区三区在线观看 | 日韩av一二三| 成人永久aaa| 欧美日韩国产一级片| 国产婷婷精品av在线| 亚洲高清不卡在线观看| 国产一区二区电影| 94-欧美-setu| 欧美一区二区三区四区视频| 国产午夜精品一区二区三区视频| 亚洲老妇xxxxxx| 国模无码大尺度一区二区三区| 色综合中文字幕国产 | 美腿丝袜亚洲三区| 丁香五精品蜜臀久久久久99网站| 一本大道久久a久久精品综合| 欧美日韩国产首页| 中文字幕欧美激情一区| 亚洲第一二三四区| 99re热这里只有精品免费视频| 在线电影欧美成精品| 亚洲免费观看在线观看| 国产一区二区不卡| 欧美疯狂做受xxxx富婆| 亚洲精品免费视频| 成人性色生活片|