|
|
@@ -1,88 +1,88 @@
|
|
|
////////////////////////////////////////////////////////////////////
|
|
|
-// Function name : BaseIncomingSet<_INCLASS1,_IN_LISTEN,MESSAGE_READER_BUF,MESSAGE_READER_UPPASS>::AddFromListener
|
|
|
-// Description : Read incoming connections off the listener
|
|
|
+// Function name : BaseIncomingSet<_INCLASS1,_IN_LISTEN,MESSAGE_READER_BUF,MESSAGE_READER_UPPASS>::AddFromListener
|
|
|
+// Description : Read incoming connections off the listener
|
|
|
//
|
|
|
-// Return type : inline void
|
|
|
+// Return type : inline void
|
|
|
// Argument : void
|
|
|
////////////////////////////////////////////////////////////////////
|
|
|
template <class _INCLASS1,class _IN_LISTEN,typename MESSAGE_READER_BUF, typename MESSAGE_READER_UPPASS>
|
|
|
inline void BaseIncomingSet<_INCLASS1,_IN_LISTEN,MESSAGE_READER_BUF,MESSAGE_READER_UPPASS>::AddFromListener(void)
|
|
|
{
|
|
|
- Socket_Address Addr1;
|
|
|
- SOCKET newsck;
|
|
|
-
|
|
|
-
|
|
|
- while(_Listener.GetIncomingConnection(newsck,Addr1) == true)
|
|
|
- {
|
|
|
- CloseState cl= ProcessNewConnection(newsck);
|
|
|
- if(cl == ConnectionDoNotClose)
|
|
|
- {
|
|
|
- _INCLASS1 * newt = new _INCLASS1(newsck,Addr1);
|
|
|
- AddAConection(newt);
|
|
|
- }
|
|
|
- else
|
|
|
- DO_CLOSE(newsck);
|
|
|
- }
|
|
|
-
|
|
|
+ Socket_Address Addr1;
|
|
|
+ SOCKET newsck;
|
|
|
+
|
|
|
+
|
|
|
+ while(_Listener.GetIncomingConnection(newsck,Addr1) == true)
|
|
|
+ {
|
|
|
+ CloseState cl= ProcessNewConnection(newsck);
|
|
|
+ if(cl == ConnectionDoNotClose)
|
|
|
+ {
|
|
|
+ _INCLASS1 * newt = new _INCLASS1(newsck,Addr1);
|
|
|
+ AddAConection(newt);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ DO_CLOSE(newsck);
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
////////////////////////////////////////////////////////////////////
|
|
|
-// Function name : BaseIncomingSet<_INCLASS1,_IN_LISTEN,MESSAGE_READER_BUF,MESSAGE_READER_UPPASS>::PumpReader
|
|
|
-// Description : Tries to read a record off the incoming socket
|
|
|
+// Function name : BaseIncomingSet<_INCLASS1,_IN_LISTEN,MESSAGE_READER_BUF,MESSAGE_READER_UPPASS>::PumpReader
|
|
|
+// Description : Tries to read a record off the incoming socket
|
|
|
//
|
|
|
-// Return type : inline void
|
|
|
+// Return type : inline void
|
|
|
// Argument : Time_Clock currentTime
|
|
|
////////////////////////////////////////////////////////////////////
|
|
|
template <class _INCLASS1,class _IN_LISTEN,typename MESSAGE_READER_BUF, typename MESSAGE_READER_UPPASS>
|
|
|
inline int BaseIncomingSet<_INCLASS1,_IN_LISTEN,MESSAGE_READER_BUF,MESSAGE_READER_UPPASS>::PumpReader(Time_Clock ¤tTime)
|
|
|
-{
|
|
|
- MESSAGE_READER_BUF message;
|
|
|
-
|
|
|
- iterator lpNext, lp;
|
|
|
- for (lpNext = lp = BaseClass::begin(); lp != BaseClass::end() ; lp = lpNext)
|
|
|
- {
|
|
|
- lpNext++;
|
|
|
-
|
|
|
- int ans = (*lp)->ReadIt(message, sizeof(message),currentTime);
|
|
|
- if(ans < 0)
|
|
|
- {
|
|
|
- delete *lp;
|
|
|
- erase(lp);
|
|
|
- }
|
|
|
- if(ans > 0)
|
|
|
- {
|
|
|
- CloseState cs = (*lp)->ProcessMessage(message,currentTime);
|
|
|
- if( cs == ConnectionDoClose)
|
|
|
- {
|
|
|
- delete *lp;
|
|
|
- erase(lp);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- return 0;
|
|
|
+{
|
|
|
+ MESSAGE_READER_BUF message;
|
|
|
+
|
|
|
+ iterator lpNext, lp;
|
|
|
+ for (lpNext = lp = BaseClass::begin(); lp != BaseClass::end() ; lp = lpNext)
|
|
|
+ {
|
|
|
+ lpNext++;
|
|
|
+
|
|
|
+ int ans = (*lp)->ReadIt(message, sizeof(message),currentTime);
|
|
|
+ if(ans < 0)
|
|
|
+ {
|
|
|
+ delete *lp;
|
|
|
+ erase(lp);
|
|
|
+ }
|
|
|
+ if(ans > 0)
|
|
|
+ {
|
|
|
+ CloseState cs = (*lp)->ProcessMessage(message,currentTime);
|
|
|
+ if( cs == ConnectionDoClose)
|
|
|
+ {
|
|
|
+ delete *lp;
|
|
|
+ erase(lp);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return 0;
|
|
|
}
|
|
|
////////////////////////////////////////////////////////////////////
|
|
|
-// Function name : BaseIncomingSet<_INCLASS1,_IN_LISTEN,MESSAGE_READER_BUF,MESSAGE_READER_UPPASS>::AddAConection
|
|
|
-// Description : Adds a member to the base container
|
|
|
+// Function name : BaseIncomingSet<_INCLASS1,_IN_LISTEN,MESSAGE_READER_BUF,MESSAGE_READER_UPPASS>::AddAConection
|
|
|
+// Description : Adds a member to the base container
|
|
|
//
|
|
|
-// Return type : inline void
|
|
|
+// Return type : inline void
|
|
|
// Argument : _INCLASS1 * newt
|
|
|
////////////////////////////////////////////////////////////////////
|
|
|
template <class _INCLASS1,class _IN_LISTEN,typename MESSAGE_READER_BUF, typename MESSAGE_READER_UPPASS>
|
|
|
inline void BaseIncomingSet<_INCLASS1,_IN_LISTEN,MESSAGE_READER_BUF,MESSAGE_READER_UPPASS>::AddAConection(_INCLASS1 * newt)
|
|
|
{
|
|
|
- push_back(newt);
|
|
|
+ push_back(newt);
|
|
|
}
|
|
|
////////////////////////////////////////////////////////////////////
|
|
|
-// Function name : BaseIncomingSet<_INCLASS1,_IN_LISTEN,MESSAGE_READER_BUF,MESSAGE_READER_UPPASS>::BaseIncomingSet
|
|
|
-// Description : core constructor
|
|
|
+// Function name : BaseIncomingSet<_INCLASS1,_IN_LISTEN,MESSAGE_READER_BUF,MESSAGE_READER_UPPASS>::BaseIncomingSet
|
|
|
+// Description : core constructor
|
|
|
//
|
|
|
-// Return type : inline
|
|
|
+// Return type : inline
|
|
|
// Argument : void
|
|
|
////////////////////////////////////////////////////////////////////
|
|
|
template <class _INCLASS1,class _IN_LISTEN,typename MESSAGE_READER_BUF, typename MESSAGE_READER_UPPASS>
|
|
|
inline BaseIncomingSet<_INCLASS1,_IN_LISTEN,MESSAGE_READER_BUF,MESSAGE_READER_UPPASS>::BaseIncomingSet(void)
|
|
|
{
|
|
|
-
|
|
|
+
|
|
|
}
|
|
|
|
|
|
template <class _INCLASS1,class _IN_LISTEN,typename MESSAGE_READER_BUF, typename MESSAGE_READER_UPPASS>
|
|
|
@@ -91,10 +91,10 @@ BaseIncomingSet<_INCLASS1,_IN_LISTEN,MESSAGE_READER_BUF,MESSAGE_READER_UPPASS>::
|
|
|
|
|
|
}
|
|
|
////////////////////////////////////////////////////////////////////
|
|
|
-// Function name : BaseIncomingSet<_INCLASS1,_IN_LISTEN,MESSAGE_READER_BUF,MESSAGE_READER_UPPASS>::~BaseIncomingSet
|
|
|
-// Description : The Destructot .. will delete all members.. ??
|
|
|
+// Function name : BaseIncomingSet<_INCLASS1,_IN_LISTEN,MESSAGE_READER_BUF,MESSAGE_READER_UPPASS>::~BaseIncomingSet
|
|
|
+// Description : The Destructot .. will delete all members.. ??
|
|
|
//
|
|
|
-// Return type :
|
|
|
+// Return type :
|
|
|
////////////////////////////////////////////////////////////////////
|
|
|
template <class _INCLASS1,class _IN_LISTEN,typename MESSAGE_READER_BUF, typename MESSAGE_READER_UPPASS>
|
|
|
BaseIncomingSet<_INCLASS1,_IN_LISTEN,MESSAGE_READER_BUF,MESSAGE_READER_UPPASS>::~BaseIncomingSet()
|
|
|
@@ -103,99 +103,99 @@ BaseIncomingSet<_INCLASS1,_IN_LISTEN,MESSAGE_READER_BUF,MESSAGE_READER_UPPASS>::
|
|
|
delete *ii;
|
|
|
}
|
|
|
////////////////////////////////////////////////////////////////////
|
|
|
-// Function name : & BaseIncomingSet<_INCLASS1,_IN_LISTEN,MESSAGE_READER_BUF,MESSAGE_READER_UPPASS>::GetListener
|
|
|
-// Description : Retyurns a pointer to the listener in this class
|
|
|
+// Function name : & BaseIncomingSet<_INCLASS1,_IN_LISTEN,MESSAGE_READER_BUF,MESSAGE_READER_UPPASS>::GetListener
|
|
|
+// Description : Retyurns a pointer to the listener in this class
|
|
|
//
|
|
|
-// Return type : inline _IN_LISTEN
|
|
|
+// Return type : inline _IN_LISTEN
|
|
|
// Argument : void
|
|
|
////////////////////////////////////////////////////////////////////
|
|
|
template <class _INCLASS1,class _IN_LISTEN,typename MESSAGE_READER_BUF, typename MESSAGE_READER_UPPASS>
|
|
|
inline _IN_LISTEN & BaseIncomingSet<_INCLASS1,_IN_LISTEN,MESSAGE_READER_BUF,MESSAGE_READER_UPPASS>::GetListener(void)
|
|
|
{
|
|
|
- return this->Listener;
|
|
|
+ return this->Listener;
|
|
|
};
|
|
|
////////////////////////////////////////////////////////////////////
|
|
|
-// Function name : BaseIncomingSet<_INCLASS1,_IN_LISTEN,MESSAGE_READER_BUF,MESSAGE_READER_UPPASS>::init
|
|
|
-// Description : the second part of the 2 phase power up.. Opends the listener
|
|
|
+// Function name : BaseIncomingSet<_INCLASS1,_IN_LISTEN,MESSAGE_READER_BUF,MESSAGE_READER_UPPASS>::init
|
|
|
+// Description : the second part of the 2 phase power up.. Opends the listener
|
|
|
//
|
|
|
-// Return type : inline bool
|
|
|
+// Return type : inline bool
|
|
|
// Argument : Socket_Address &WhereFrom
|
|
|
////////////////////////////////////////////////////////////////////
|
|
|
template <class _INCLASS1,class _IN_LISTEN,typename MESSAGE_READER_BUF, typename MESSAGE_READER_UPPASS>
|
|
|
inline bool BaseIncomingSet<_INCLASS1,_IN_LISTEN,MESSAGE_READER_BUF,MESSAGE_READER_UPPASS>::init(Socket_Address &WhereFrom)
|
|
|
{
|
|
|
- if(_Listener.OpenForListen(WhereFrom,true) != true)
|
|
|
- return false;
|
|
|
- _Listener.SetNonBlocking();
|
|
|
- return true;
|
|
|
+ if(_Listener.OpenForListen(WhereFrom,true) != true)
|
|
|
+ return false;
|
|
|
+ _Listener.SetNonBlocking();
|
|
|
+ return true;
|
|
|
}
|
|
|
////////////////////////////////////////////////////////////////////
|
|
|
-// Function name : BaseIncomingSet<_INCLASS1,_IN_LISTEN,MESSAGE_READER_BUF,MESSAGE_READER_UPPASS>::PumpAll
|
|
|
-// Description : THis is the polled interface to this class
|
|
|
+// Function name : BaseIncomingSet<_INCLASS1,_IN_LISTEN,MESSAGE_READER_BUF,MESSAGE_READER_UPPASS>::PumpAll
|
|
|
+// Description : THis is the polled interface to this class
|
|
|
//
|
|
|
-// Return type : inline void
|
|
|
+// Return type : inline void
|
|
|
// Argument : Time_Clock ¤tTime
|
|
|
////////////////////////////////////////////////////////////////////
|
|
|
template <class _INCLASS1,class _IN_LISTEN,typename MESSAGE_READER_BUF, typename MESSAGE_READER_UPPASS>
|
|
|
inline void BaseIncomingSet<_INCLASS1,_IN_LISTEN,MESSAGE_READER_BUF,MESSAGE_READER_UPPASS>::PumpAll(Time_Clock ¤tTime)
|
|
|
{
|
|
|
- PumpReader(currentTime); // I MOVED ORDER TO FINE TUNE THE READ OPERATIONS
|
|
|
- AddFromListener();
|
|
|
+ PumpReader(currentTime); // I MOVED ORDER TO FINE TUNE THE READ OPERATIONS
|
|
|
+ AddFromListener();
|
|
|
}
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
|
-// Function name : BaseIncomingSet<_INCLASS1,_IN_LISTEN,MESSAGE_READER_BUF,MESSAGE_READER_UPPASS>::ProcessNewConnection
|
|
|
-// Description : this is the vertual function call when a new connection is created
|
|
|
-// manly here for loging if needed...
|
|
|
+// Function name : BaseIncomingSet<_INCLASS1,_IN_LISTEN,MESSAGE_READER_BUF,MESSAGE_READER_UPPASS>::ProcessNewConnection
|
|
|
+// Description : this is the vertual function call when a new connection is created
|
|
|
+// manly here for loging if needed...
|
|
|
//
|
|
|
-// Return type : CloseState
|
|
|
+// Return type : CloseState
|
|
|
// Argument : SOCKET socket
|
|
|
////////////////////////////////////////////////////////////////////
|
|
|
template <class _INCLASS1,class _IN_LISTEN,typename MESSAGE_READER_BUF, typename MESSAGE_READER_UPPASS>
|
|
|
CloseState BaseIncomingSet<_INCLASS1,_IN_LISTEN,MESSAGE_READER_BUF,MESSAGE_READER_UPPASS>::ProcessNewConnection(SOCKET socket)
|
|
|
{
|
|
|
- return ConnectionDoNotClose;
|
|
|
+ return ConnectionDoNotClose;
|
|
|
}
|
|
|
////////////////////////////////////////////////////////////////////
|
|
|
-// Function name : void BaseIncomingSet<_INCLASS1,_IN_LISTEN,MESSAGE_READER_BUF,MESSAGE_READER_UPPASS>::AddToFDSet
|
|
|
-// Description : Add LIstener and Client to the FD set for polled reading
|
|
|
+// Function name : void BaseIncomingSet<_INCLASS1,_IN_LISTEN,MESSAGE_READER_BUF,MESSAGE_READER_UPPASS>::AddToFDSet
|
|
|
+// Description : Add LIstener and Client to the FD set for polled reading
|
|
|
//
|
|
|
-// Return type : inline
|
|
|
+// Return type : inline
|
|
|
// Argument : Socket_Selector &set
|
|
|
////////////////////////////////////////////////////////////////////
|
|
|
template <class _INCLASS1,class _IN_LISTEN,typename MESSAGE_READER_BUF, typename MESSAGE_READER_UPPASS>
|
|
|
inline void BaseIncomingSet<_INCLASS1,_IN_LISTEN,MESSAGE_READER_BUF,MESSAGE_READER_UPPASS>::AddToFDSet(Socket_fdset &set1)
|
|
|
-{
|
|
|
- if(_Listener.Active())
|
|
|
- set1.setForSocket(_Listener);
|
|
|
- iterator lp;
|
|
|
-
|
|
|
- for (lp = BaseClass::begin(); lp != BaseClass::end(); lp = lp++)
|
|
|
- set1.setForSocket((*lp)->val);
|
|
|
+{
|
|
|
+ if(_Listener.Active())
|
|
|
+ set1.setForSocket(_Listener);
|
|
|
+ iterator lp;
|
|
|
+
|
|
|
+ for (lp = BaseClass::begin(); lp != BaseClass::end(); lp = lp++)
|
|
|
+ set1.setForSocket((*lp)->val);
|
|
|
}
|
|
|
|
|
|
template <class _INCLASS1,class _IN_LISTEN,typename MESSAGE_READER_BUF, typename MESSAGE_READER_UPPASS>
|
|
|
inline BaseIncomingSet<_INCLASS1,_IN_LISTEN,MESSAGE_READER_BUF,MESSAGE_READER_UPPASS> &BaseIncomingSet<_INCLASS1,_IN_LISTEN,MESSAGE_READER_BUF,MESSAGE_READER_UPPASS>::operator=
|
|
|
- (BaseIncomingSet &inval)
|
|
|
+ (BaseIncomingSet &inval)
|
|
|
{
|
|
|
- if (&inval == this) return *this;
|
|
|
- _Listener = inval._Listener;
|
|
|
- return *this;
|
|
|
+ if (&inval == this) return *this;
|
|
|
+ _Listener = inval._Listener;
|
|
|
+ return *this;
|
|
|
}
|
|
|
|
|
|
|
|
|
template <class _INCLASS1,class _IN_LISTEN,typename MESSAGE_READER_BUF, typename MESSAGE_READER_UPPASS>
|
|
|
inline void BaseIncomingSet<_INCLASS1,_IN_LISTEN,MESSAGE_READER_BUF,MESSAGE_READER_UPPASS>::Reset()
|
|
|
{
|
|
|
- _Listener.Close();
|
|
|
- iterator lpNext, lp;
|
|
|
- for (lpNext = lp = BaseClass::begin(); lp != BaseClass::end() ; lp = lpNext)
|
|
|
- {
|
|
|
- lpNext++;
|
|
|
- (*lp)->Reset();
|
|
|
- delete *lp;
|
|
|
- erase(lp);
|
|
|
- }
|
|
|
+ _Listener.Close();
|
|
|
+ iterator lpNext, lp;
|
|
|
+ for (lpNext = lp = BaseClass::begin(); lp != BaseClass::end() ; lp = lpNext)
|
|
|
+ {
|
|
|
+ lpNext++;
|
|
|
+ (*lp)->Reset();
|
|
|
+ delete *lp;
|
|
|
+ erase(lp);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
|