summaryrefslogtreecommitdiff
path: root/netsvcs/lib/TS_Clerk_Handler.h
diff options
context:
space:
mode:
Diffstat (limited to 'netsvcs/lib/TS_Clerk_Handler.h')
-rw-r--r--netsvcs/lib/TS_Clerk_Handler.h258
1 files changed, 0 insertions, 258 deletions
diff --git a/netsvcs/lib/TS_Clerk_Handler.h b/netsvcs/lib/TS_Clerk_Handler.h
deleted file mode 100644
index b322e82eef8..00000000000
--- a/netsvcs/lib/TS_Clerk_Handler.h
+++ /dev/null
@@ -1,258 +0,0 @@
-/* -*- C++ -*- */
-
-//=============================================================================
-/**
- * @file TS_Clerk_Handler.h
- *
- * $Id$
- *
- * @author Prashant Jain
- */
-//=============================================================================
-
-
-#ifndef ACE_TS_CLERK_HANDLER_H
-#define ACE_TS_CLERK_HANDLER_H
-
-#if !defined (ACE_LACKS_PRAGMA_ONCE)
-# pragma once
-#endif /* ACE_LACKS_PRAGMA_ONCE */
-
-#include "ace/SOCK_Connector.h"
-#include "ace/Svc_Handler.h"
-#include "ace/Connector.h"
-#include "ace/MMAP_Memory_Pool.h"
-#include "ace/Malloc_T.h"
-#include "ace/Null_Mutex.h"
-#include "ace/Time_Request_Reply.h"
-#include "ace/svc_export.h"
-#include "ace/os_include/os_dirent.h"
-
-/**
- * @class ACE_Time_Info
- *
- * @brief A simple struct containing delta time and a sequence number.
- */
-class ACE_Time_Info
-{
-
-public:
- long delta_time_;
-
- ACE_UINT32 sequence_num_;
-};
-
-class ACE_TS_Clerk_Processor; // forward declaration
-
-#if defined ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION_EXPORT
-template class ACE_Svc_Export ACE_Svc_Handler<ACE_SOCK_STREAM, ACE_NULL_SYNCH>;
-#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION_EXPORT */
-
-/**
- * @class ACE_TS_Clerk_Handler
- *
- * @brief The Clerk Handler provides the interface that is used by the
- * Clerk Processor to send time update requests to all the
- * servers. It obtains these updates from the servers and passes
- * the updates to the Clerk Processor
- *
- * The Clerk Processor uses send_request() to send a request for
- * time update to a server. The Clerk Handler internally computes
- * the round trip delay for the reply to come back. Once it gets
- * the reply back from the server (handle_input), it adjusts the
- * system time using the round trip delay estimate and then
- * passes the delta time by reference back to the Clerk
- * Processor.
- */
-class ACE_Svc_Export ACE_TS_Clerk_Handler : public ACE_Svc_Handler<ACE_SOCK_STREAM, ACE_NULL_SYNCH>
-{
-public:
- /// Default constructor.
- ACE_TS_Clerk_Handler (ACE_TS_Clerk_Processor *processor = 0,
- ACE_INET_Addr &addr = (ACE_INET_Addr &) ACE_Addr::sap_any);
-
- // = Set/get the current state
- enum State
- {
- IDLE = 1, // Prior to initialization.
- CONNECTING, // During connection establishment.
- ESTABLISHED, // Connection is established and active.
- DISCONNECTING, // In the process of disconnecting.
- FAILED // Connection has failed.
- };
-
- // = Set/get the current state.
- State state (void);
- void state (State);
-
- // = Set/get the current retry timeout delay.
- long timeout (void);
- void timeout (long);
-
- // = Set/get the maximum retry timeout delay.
- long max_timeout (void);
- void max_timeout (long);
-
- /// Activate this instance of the <ACE_TS_Clerk_Handler>
- /// (called by the <ACE_TS_Clerk_Processor>).
- virtual int open (void * = 0);
-
- /// Return the handle of the message_fifo_;
- virtual ACE_HANDLE get_handle (void) const;
-
- /// Called when object is removed from the ACE_Reactor
- virtual int handle_close (ACE_HANDLE = ACE_INVALID_HANDLE,
- ACE_Reactor_Mask = ACE_Event_Handler::ALL_EVENTS_MASK);
-
- /// Receive time update from a server.
- virtual int handle_input (ACE_HANDLE);
-
- /// Restart connection asynchronously when timeout occurs.
- virtual int handle_timeout (const ACE_Time_Value &tv,
- const void *arg);
-
- /// Get/Set remote addr
- void remote_addr (ACE_INET_Addr &addr);
- ACE_INET_Addr &remote_addr (void);
-
- /// Send request for time update to the server as well as return the
- /// current time info by reference.
- int send_request (ACE_UINT32 sequence_num,
- ACE_Time_Info &time_info);
-
-protected:
- /// Handle SIGPIPE.
- virtual int handle_signal (int signum,
- siginfo_t *,
- ucontext_t *);
-
- static void stderr_output (int = 0);
-
- enum
- {
- MAX_RETRY_TIMEOUT = 300
- // 5 minutes is the maximum timeout.
- };
-
-private:
- /// Receive a reply from a server containing time update
- int recv_reply (ACE_Time_Request &reply);
-
- /// Reinitiate connection with the server
- int reinitiate_connection (void);
-
- /// The current state of the connection
- State state_;
-
- /// Amount of time to wait between reconnection attempts
- long timeout_;
-
- /// Maximum amount of time to wait between reconnection attempts
- long max_timeout_;
-
- /// Remote Addr used for connecting to the server
- ACE_INET_Addr remote_addr_;
-
- /// Instance of Clerk Processor used for re-establishing connections
- ACE_TS_Clerk_Processor *processor_;
-
- /// Time at which request was sent (used to compute round trip delay)
- ACE_UINT32 start_time_;
-
- /// Next sequence number of time request (waiting for this update from
- /// the server).
- ACE_UINT32 cur_sequence_num_;
-
- /// Record of current delta time and current sequence number
- ACE_Time_Info time_info_;
-};
-
-/**
- * @class ACE_TS_Clerk_Processor
- *
- * @brief This class manages all the connections to the servers along
- * with querying them periodically for time updates.
- *
- * The Clerk Processor creates connections to all the servers and
- * creates an ACE_TS_Clerk_Handler for each connection to handle
- * the requests and replies. It periodically sends a request for
- * time update through each of the handlers and uses the replies
- * for computing a synchronized system time.
- */
-class ACE_TS_Clerk_Processor : public ACE_Connector <ACE_TS_Clerk_Handler, ACE_SOCK_CONNECTOR>
-{
-public:
- /// Default constructor
- ACE_TS_Clerk_Processor (void);
-
- /// Query servers for time periodically (timeout value)
- virtual int handle_timeout (const ACE_Time_Value &tv,
- const void *arg);
-
- /// Set up connections to all servers
- int initiate_connection (ACE_TS_Clerk_Handler *,
- ACE_Synch_Options &);
-
-protected:
- // = Dynamic linking hooks.
- /// Called when service is linked.
- virtual int init (int argc, ACE_TCHAR *argv[]);
-
- /// Called when service is unlinked.
- virtual int fini (void);
-
- /// Called to determine info about the service.
- virtual int info (ACE_TCHAR **strp, size_t length) const;
-
- // = Scheduling hooks.
- virtual int suspend (void);
- virtual int resume (void);
-
-private:
- /// Parse svc.conf arguments.
- int parse_args (int argc, ACE_TCHAR *argv[]);
-
- /// Allocate entry in shared memory for system time
- void alloc (void);
-
- /// Update delta_time using times obtained from all servers
- int update_time ();
-
- /// Allocator (used for reading/writing system time from/to shared memory)
- typedef ACE_Malloc <ACE_MMAP_MEMORY_POOL, ACE_Null_Mutex> MALLOC;
- typedef ACE_Allocator_Adapter<MALLOC> ALLOCATOR;
- ALLOCATOR *shmem_;
-
- /// Set of TS_Clerk_Handlers and iterator over the set.
- typedef ACE_Unbounded_Set <ACE_TS_Clerk_Handler *> HANDLER_SET;
- typedef ACE_Unbounded_Set_Iterator <ACE_TS_Clerk_Handler *> HANDLER_SET_ITERATOR;
- HANDLER_SET handler_set_;
-
- struct System_Time
- {
- long *delta_time_; // Difference between system time and local time
- long *last_local_time_; // Last local time
- };
-
- /// Clerk system time containing pointers to entries in shared memory
- System_Time system_time_;
-
- /// Timer id returned by Reactor
- long timer_id_;
-
- /// Time period for updating system time
- long timeout_;
-
- /// Pool name for backing store
- ACE_TCHAR poolname_[MAXNAMLEN + 1];
-
- /// Do a blocking/non-blocking connect
- int blocking_semantics_;
-
- /// Sequence number of next expected update from servers
- ACE_UINT32 cur_sequence_num_;
-};
-
-ACE_SVC_FACTORY_DECLARE (ACE_TS_Clerk_Processor)
-
-#endif /* ACE_TS_CLERK_HANDLER_H */