12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- /* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
- #ifndef nsASocketHandler_h__
- #define nsASocketHandler_h__
- // socket handler used by nsISocketTransportService.
- // methods are only called on the socket thread.
- class nsASocketHandler : public nsISupports
- {
- public:
- nsASocketHandler()
- : mCondition(NS_OK)
- , mPollFlags(0)
- , mPollTimeout(UINT16_MAX)
- , mIsPrivate(false)
- {}
- //
- // this condition variable will be checked to determine if the socket
- // handler should be detached. it must only be accessed on the socket
- // thread.
- //
- nsresult mCondition;
- //
- // these flags can only be modified on the socket transport thread.
- // the socket transport service will check these flags before calling
- // PR_Poll.
- //
- uint16_t mPollFlags;
- //
- // this value specifies the maximum amount of time in seconds that may be
- // spent waiting for activity on this socket. if this timeout is reached,
- // then OnSocketReady will be called with outFlags = -1.
- //
- // the default value for this member is UINT16_MAX, which disables the
- // timeout error checking. (i.e., a timeout value of UINT16_MAX is
- // never reached.)
- //
- uint16_t mPollTimeout;
- bool mIsPrivate;
- //
- // called to service a socket
- //
- // params:
- // socketRef - socket identifier
- // fd - socket file descriptor
- // outFlags - value of PR_PollDesc::out_flags after PR_Poll returns
- // or -1 if a timeout occurred
- //
- virtual void OnSocketReady(PRFileDesc *fd, int16_t outFlags) = 0;
- //
- // called when a socket is no longer under the control of the socket
- // transport service. the socket handler may close the socket at this
- // point. after this call returns, the handler will no longer be owned
- // by the socket transport service.
- //
- virtual void OnSocketDetached(PRFileDesc *fd) = 0;
- //
- // called to determine if the socket is for a local peer.
- // when used for server sockets, indicates if it only accepts local
- // connections.
- //
- virtual void IsLocal(bool *aIsLocal) = 0;
- //
- // called to determine if this socket should not be terminated when Gecko
- // is turned offline. This is mostly useful for the debugging server
- // socket.
- //
- virtual void KeepWhenOffline(bool *aKeepWhenOffline)
- {
- *aKeepWhenOffline = false;
- }
- //
- // called when global pref for keepalive has changed.
- //
- virtual void OnKeepaliveEnabledPrefChange(bool aEnabled) { }
- //
- // returns the number of bytes sent/transmitted over the socket
- //
- virtual uint64_t ByteCountSent() = 0;
- virtual uint64_t ByteCountReceived() = 0;
- };
- #endif // !nsASocketHandler_h__
|