func()

in gdbclient/internal/pool/conn.go [115:136]


func (cn *ConnWebSocket) Close() {
	if !atomic.CompareAndSwapUint32(&cn._closed, 0, 1) {
		return
	}

	// close chan quit to wakeup all goroutine
	close(cn.closeCn)

	// close connection
	cn.netConn.Close()

	// fill complete all pending response future
	cn.pendingResponses.Range(func(key, value interface{}) bool {
		response := graphsonv3.NewErrorResponse(key.(string),
			graphsonv3.RESPONSE_STATUS_REQUEST_ERROR_DELIVER, cn.lastIoError)
		value.(*graphsonv3.ResponseFuture).Complete(response)
		return true
	})
	atomic.StoreInt32(&cn.pendingSize, 0)
	cn.pendingResponses = &sync.Map{}
	internal.Logger.Info("connect close", zapPtr(cn))
}