added new priority parameter

This commit is contained in:
Jeff Hill
2001-08-23 21:02:22 +00:00
parent 56e9cbfd67
commit 3235b59641
3 changed files with 39 additions and 35 deletions

View File

@@ -35,8 +35,8 @@
tsFreeList < class nciu, 1024 > nciu::freeList;
epicsMutex nciu::freeListMutex;
nciu::nciu ( cac &cacIn, netiiu &iiuIn, cacChannelNotify &chanIn,
const char *pNameIn ) :
nciu::nciu ( cac & cacIn, netiiu & iiuIn, cacChannelNotify & chanIn,
const char *pNameIn, cacChannel::priLev pri ) :
cacChannel ( chanIn ),
cacCtx ( cacIn ),
piiu ( &iiuIn ),
@@ -46,6 +46,7 @@ nciu::nciu ( cac &cacIn, netiiu &iiuIn, cacChannelNotify &chanIn,
retrySeqNo ( 0u ),
nameLength ( strlen ( pNameIn ) + 1 ),
typeCode ( USHRT_MAX ),
priority ( pri ),
f_connected ( false ),
f_previousConn ( false ),
f_claimSent ( false ),
@@ -54,7 +55,7 @@ nciu::nciu ( cac &cacIn, netiiu &iiuIn, cacChannelNotify &chanIn,
{
// second constraint is imposed by size field in protocol header
if ( this->nameLength > MAX_UDP_SEND - sizeof ( caHdr ) || this->nameLength > 0xffff ) {
throwWithLocation ( caErrorCode ( ECA_BADSTR ) );
throw cacChannel::badString ();
}
this->pNameStr = new char [ this->nameLength ];
@@ -368,8 +369,7 @@ unsigned nciu::searchAttempts () const
double nciu::beaconPeriod () const
{
epicsAutoMutex locker ( this->cacCtx.mutexRef() );
return this->piiu->beaconPeriod ();
return this->cacCtx.beaconPeriod ( *this );
}
void nciu::notifyStateChangeFirstConnectInCountOfOutstandingIO ()
@@ -441,8 +441,3 @@ int nciu::printf ( const char *pFormat, ... )
return status;
}

View File

@@ -42,8 +42,8 @@ private:
class nciu : public cacChannel, public tsDLNode < nciu >,
public chronIntIdRes < nciu >, public cacPrivateListOfIO {
public:
nciu ( cac &, netiiu &,
cacChannelNotify &, const char *pNameIn );
nciu ( cac &, netiiu &, cacChannelNotify &,
const char *pNameIn, cacChannel::priLev );
void connect ( unsigned nativeType,
unsigned nativeCount, unsigned sid, bool v41Ok );
void connect ();
@@ -62,6 +62,7 @@ public:
ca_uint32_t getSID () const;
ca_uint32_t getCID () const;
netiiu * getPIIU ();
const netiiu * getConstPIIU () const;
cac & getClient ();
int printf ( const char *pFormat, ... );
void searchReplySetUp ( netiiu &iiu, unsigned sidIn,
@@ -75,6 +76,7 @@ public:
bool connected () const;
bool previouslyConnected () const;
void writeException ( int status, const char *pContext, unsigned type, arrayElementCount count );
cacChannel::priLev getPriority () const;
protected:
~nciu (); // force pool allocation
private:
@@ -88,6 +90,7 @@ private:
ca_uint16_t retrySeqNo; // search retry seq number
ca_uint16_t nameLength; // channel name length
ca_uint16_t typeCode;
ca_uint8_t priority;
unsigned f_connected:1;
unsigned f_previousConn:1; // T if connected in the past
unsigned f_claimSent:1;
@@ -188,6 +191,11 @@ inline netiiu * nciu::getPIIU ()
return this->piiu;
}
inline const netiiu * nciu::getConstPIIU () const
{
return this->piiu;
}
inline cac & nciu::getClient ()
{
return this->cacCtx;
@@ -219,4 +227,9 @@ inline void nciu::accessRightsNotify () const
this->notify().accessRightsNotify ( this->accessRightState );
}
inline cacChannel::priLev nciu::getPriority () const
{
return this->priority;
}
#endif // ifdef nciuh

View File

@@ -29,9 +29,9 @@
struct oldChannelNotify : public cacChannelNotify {
public:
oldChannelNotify ( class oldCAC &, const char *pName, caCh *pConnCallBackIn, void *pPrivateIn );
oldChannelNotify ( class oldCAC &, const char *pName,
caCh *pConnCallBackIn, void *pPrivateIn, capri priority );
void destroy ();
bool ioAttachOK ();
void setPrivatePointer ( void * );
void * privatePointer () const;
int changeConnCallBack ( caCh *pfunc );
@@ -73,11 +73,11 @@ public:
protected:
~oldChannelNotify (); // must allocate from pool
private:
cacChannel &io;
oldCAC &cacCtx;
caCh *pConnCallBack;
void *pPrivate;
caArh *pAccessRightsFunc;
cacChannel & io;
oldCAC & cacCtx;
caCh * pConnCallBack;
void * pPrivate;
caArh * pAccessRightsFunc;
void connectNotify ();
void disconnectNotify ();
void accessRightsNotify ( const caAccessRights & );
@@ -127,9 +127,9 @@ public:
protected:
~getCallback (); // allocate only out of pool
private:
oldChannelNotify &chan;
caEventCallBackFunc *pFunc;
void *pPrivate;
oldChannelNotify & chan;
caEventCallBackFunc * pFunc;
void * pPrivate;
void completion (
unsigned type, arrayElementCount count, const void *pData);
void exception ( int status,
@@ -164,18 +164,17 @@ public:
oldChannelNotify &,
unsigned type, arrayElementCount nElem, unsigned mask,
caEventCallBackFunc *pFunc, void *pPrivate );
bool ioAttachOK ();
void destroy ();
void * operator new ( size_t size );
void operator delete ( void *pCadaver, size_t size );
oldChannelNotify &channel () const;
oldChannelNotify & channel () const;
protected:
~oldSubscription (); // must allocate from pool
private:
oldChannelNotify &chan;
oldChannelNotify & chan;
cacChannel::ioid id;
caEventCallBackFunc *pFunc;
void *pPrivate;
caEventCallBackFunc * pFunc;
void * pPrivate;
bool subscribed;
void current (
unsigned type, arrayElementCount count, const void *pData );
@@ -194,7 +193,8 @@ public:
void registerForFileDescriptorCallBack ( CAFDHANDLER *pFunc, void *pArg );
void replaceErrLogHandler ( caPrintfFunc *ca_printf_func );
void registerService ( cacService &service );
cacChannel & createChannel ( const char *name_str, oldChannelNotify &chan );
cacChannel & createChannel ( const char * name_str,
oldChannelNotify & chan, cacChannel::priLev pri );
void flushRequest ();
int pendIO ( const double &timeout );
int pendEvent ( const double &timeout );
@@ -235,11 +235,6 @@ private:
int fetchClientContext ( oldCAC **ppcac );
inline bool oldChannelNotify::ioAttachOK ()
{
return &this->io ? true : false;
}
inline void oldChannelNotify::destroy ()
{
delete this;
@@ -432,9 +427,10 @@ inline void oldCAC::registerService ( cacService &service )
this->clientCtx.registerService ( service );
}
inline cacChannel & oldCAC::createChannel ( const char *name_str, oldChannelNotify &chan )
inline cacChannel & oldCAC::createChannel ( const char * name_str,
oldChannelNotify & chan, cacChannel::priLev pri )
{
return this->clientCtx.createChannel ( name_str, chan );
return this->clientCtx.createChannel ( name_str, chan, pri );
}
inline int oldCAC::pendIO ( const double &timeout )