summaryrefslogtreecommitdiff
path: root/netsvcs/lib/Token_Handler.h
diff options
context:
space:
mode:
Diffstat (limited to 'netsvcs/lib/Token_Handler.h')
-rw-r--r--netsvcs/lib/Token_Handler.h284
1 files changed, 0 insertions, 284 deletions
diff --git a/netsvcs/lib/Token_Handler.h b/netsvcs/lib/Token_Handler.h
deleted file mode 100644
index 519965be182..00000000000
--- a/netsvcs/lib/Token_Handler.h
+++ /dev/null
@@ -1,284 +0,0 @@
-/* -*- C++ -*- */
-
-//=============================================================================
-/**
- * @file Token_Handler.h
- *
- * $Id$
- *
- * @author Douglas C. Schmidt (schmidt@cs.wustl.edu) Tim Harrison (harrison@cs.wustl.edu)
- */
-//=============================================================================
-
-
-#ifndef ACE_TOKEN_HANDLER_H
-#define ACE_TOKEN_HANDLER_H
-
-#include "ace/Acceptor.h"
-
-#if !defined (ACE_LACKS_PRAGMA_ONCE)
-# pragma once
-#endif /* ACE_LACKS_PRAGMA_ONCE */
-
-#include "ace/SOCK_Acceptor.h"
-#include "ace/Local_Tokens.h"
-#include "ace/Token_Collection.h"
-#include "ace/Token_Request_Reply.h"
-#include "ace/svc_export.h"
-
-#if defined (ACE_HAS_TOKENS_LIBRARY)
-
-/**
- * @class ACE_Token_Handler
- *
- * @brief Product object created by an <ACE_Token_Acceptor>. A
- * <Token_Handler> exchanges messages with a <Token_Proxy> object
- * on the client-side.
- *
- * This class is the main workhorse of the ACE Token service. It
- * receives token operation requests from remote clients and turns
- * them into calls on local tokens (acquire, release, renew, and
- * remove). In OMG CORBA terms, it is an object adapter. It also
- * schedules and handles timeouts that are used to support "timed
- * waits." Clients used timed waits to bound the amount of time
- * they block trying to get a token.
- */
-class ACE_Svc_Export ACE_Token_Handler : public ACE_Svc_Handler<ACE_SOCK_STREAM, ACE_NULL_SYNCH>
-{
-
-public:
- // = Initialization and termination.
-
- /// Default constructor.
- ACE_Token_Handler (ACE_Thread_Manager * = 0);
-
- // = Accessor and mutator methods.
-
- // = Remote operations "exported" to a client.
- /**
- * Try to acquire the token.
- * Precondition: client *may* hold the token already (i.e.,
- * supports recursive acquisitions).
- */
- virtual int acquire (ACE_Token_Proxy *proxy);
-
- /// Try to acquire the token.
- virtual int try_acquire (ACE_Token_Proxy *proxy);
-
- /// Release the token and allow the next client that is waiting to
- /// proceed. Preconditions: client must hold the token.
- virtual int release (ACE_Token_Proxy *proxy);
-
- /// Yield the token if any clients are waiting, otherwise keep the
- /// token. Preconditions: client must hold the token.
- virtual int renew (ACE_Token_Proxy *proxy);
-
- /**
- * Remove the specified token from the Token_Map. Preconditions:
- * ACE_Token must exist. @@ Any other preconditions, e.g., must
- * client hold token, must there be no waiters, etc.?
- */
- virtual int remove (ACE_Token_Proxy *proxy);
-
- /// Called by TS_[Mutex,RLock,WLock] when we hold the mutex and
- /// someone wants it.
- void sleep_hook (void);
-
- /// Called by TS_[Mutex,RLock,WLock] when we are waiting and acquire
- /// the mutex.
- void token_acquired (ACE_TPQ_Entry *);
-
-protected:
- // = Low level routines for framing requests, dispatching
- // operations, and returning replies.
-
- /// Our connection has been closed.
- virtual int abandon (int send_error);
-
- /// Receive, frame, and decode the client's request.
- virtual int recv_request (void);
-
- /// Dispatch the appropriate operation to handle the client's
- /// request.
- virtual int dispatch (void);
-
- /// Create and send a reply to the client.
- virtual int send_reply (ACE_UINT32 errnum);
-
- // = Demultiplexing hooks.
- /// Callback method invoked by the <ACE_Reactor> when client events
- /// arrive.
- virtual int handle_input (ACE_HANDLE);
-
- // = Timer hook.
- /// Enable clients to limit the amount of time they wait for a token.
- virtual int handle_timeout (const ACE_Time_Value &tv, const void *arg);
-
- /// return a proxy for the calling client_id and token name.
- ACE_Token_Proxy *get_proxy (void);
-
-private:
-
- /// Switches on the type of token_request_ and creates a new
- /// Token_Proxy.
- virtual ACE_Token_Proxy *create_proxy (void);
-
- /// Keeps track of the synchronization options (i.e., the timeout
- /// interval).
- ACE_Synch_Options request_options_;
-
- /// collection of the client's token proxies.
- ACE_Token_Collection collection_;
-
- /// ID returned by the Reactor that is used to kill registered timers
- /// when a token operation times out.
- long timeout_id_;
-
- /// Cache request from the client.
- ACE_Token_Request token_request_;
-
- /// Cache reply to the client.
- ACE_Token_Reply token_reply_;
-};
-
-// = DESCRIPTION of ACE_TS_* classes:
-// When Tokens are released, waiting token proxies are notified
-// when the releasing thread calls token_acquired on the waiting
-// proxy. The Token Server specializes ACE_Token_Proxy to
-// redefine the implementation of token_acquired. When
-// token_acquired is called, the Token_Handler can then send the
-// response back over the socket connection to unblock the
-// client side.
-// Since only the Token_Handler uses ACE_TS_Mutex, we've moved
-// the definition to the .cpp file.
-
-/**
- * @class ACE_TS_Mutex
- *
- * @brief ACE_TS_Mutex -- ACE_*T*oken_*S*erver_Mutex
- */
-class ACE_TS_Mutex : public ACE_Local_Mutex
-{
-
-public:
- /// Creation.
- ACE_TS_Mutex (const ACE_TCHAR *name,
- ACE_Token_Handler *th);
-
-protected:
- /// Somebody wants our token!
- virtual void sleep_hook (void);
-
- /**
- * We've been taken off the waiters list and given the token! Call
- * the Token_Handler associated at construction, so it can tell the
- * remote client.
- */
- virtual void token_acquired (ACE_TPQ_Entry *);
-
- /// Duplication.
- ACE_TS_Mutex (const ACE_TS_Mutex &);
-
- /// Return a deep copy.
- virtual ACE_Token_Proxy *clone (void) const;
-
-private:
- /// The Token Handler associated with this proxy. Set at
- /// construction and notified when blocking acquires succeed.
- ACE_Token_Handler* th_;
-};
-
-/**
- * @class ACE_TS_RLock
- *
- * @brief ACE_TS_RLock -- ACE_*T*oken_*S*erver_RLock
- */
-class ACE_TS_RLock : public ACE_Local_RLock
-{
-public:
- /// Creation.
- ACE_TS_RLock (const ACE_TCHAR *name,
- ACE_Token_Handler *th);
-
-protected:
- /// Somebody wants our token!
- virtual void sleep_hook (void);
-
- /**
- * We've been taken off the waiters list and given the token! Call
- * the Token_Handler associated at construction, so it can tell the
- * remote client.
- */
- virtual void token_acquired (ACE_TPQ_Entry *);
-
- /// Duplication.
- ACE_TS_RLock (const ACE_TS_RLock&);
-
- /// Return a deep copy.
- virtual ACE_Token_Proxy *clone (void) const;
-
-private:
- /// the Token Handler associated with this proxy. Set at
- /// construction and notified when blocking acquires succeed.
- ACE_Token_Handler* th_;
-};
-
-/**
- * @class ACE_TS_WLock
- *
- * @brief ACE_TS_WLock -- ACE_*T*oken_*S*erver_WLock
- */
-class ACE_TS_WLock : public ACE_Local_WLock
-{
-public:
- /// Creation.
- ACE_TS_WLock (const ACE_TCHAR *name,
- ACE_Token_Handler *th);
-
-protected:
- /// Somebody wants our token!
- virtual void sleep_hook (void);
-
- /**
- * We've been taken off the waiters list and given the token! Call
- * the Token_Handler associated at construction, so it can tell the
- * remote client.
- */
- virtual void token_acquired (ACE_TPQ_Entry *);
-
- /// Duplication.
- ACE_TS_WLock (const ACE_TS_WLock&);
-
- /// Return a deep copy.
- virtual ACE_Token_Proxy *clone (void) const;
-
-private:
- /// the Token Handler associated with this proxy. Set at
- /// construction and notified when blocking acquires succeed.
- ACE_Token_Handler* th_;
-};
-
-/**
- * @class ACE_Token_Acceptor
- *
- * @brief This class contains the service-specific methods that can't
- * easily be factored into the <ACE_Strategy_Acceptor>.
- */
-class ACE_Token_Acceptor : public ACE_Strategy_Acceptor<ACE_Token_Handler, ACE_SOCK_ACCEPTOR>
-{
-public:
- /// Dynamic linking hook.
- virtual int init (int argc, ACE_TCHAR *argv[]);
-
- /// Parse svc.conf arguments.
- int parse_args (int argc, ACE_TCHAR *argv[]);
-
-private:
- /// The scheduling strategy is designed for Reactive services.
- ACE_Schedule_All_Reactive_Strategy<ACE_Token_Handler> scheduling_strategy_;
-};
-
-ACE_SVC_FACTORY_DECLARE (ACE_Token_Acceptor)
-
-#endif /* ACE_HAS_TOKENS_LIBRARY */
-#endif /* ACE_TOKEN_HANDLER_H */