[ Th3_Err0r Bypassed ]




Upload:

Command:

liwaavux@216.73.216.140: ~ $
/*
  +----------------------------------------------------------------------+
  | Swoole                                                               |
  +----------------------------------------------------------------------+
  | This source file is subject to version 2.0 of the Apache license,    |
  | that is bundled with this package in the file LICENSE, and is        |
  | available through the world-wide-web at the following url:           |
  | http://www.apache.org/licenses/LICENSE-2.0.html                      |
  | If you did not receive a copy of the Apache2.0 license and are unable|
  | to obtain it through the world-wide-web, please send a note to       |
  | license@swoole.com so we can mail you a copy immediately.            |
  +----------------------------------------------------------------------+
  | Author: Tianfeng Han  <rango@swoole.com>                             |
  |         Twosee  <twose@qq.com>                                       |
  +----------------------------------------------------------------------+
*/

#pragma once

#include "swoole.h"

#ifdef SW_USE_THREAD_CONTEXT
#include <thread>
#include <mutex>
#elif !defined(SW_USE_ASM_CONTEXT)
#define USE_UCONTEXT 1
#ifndef _XOPEN_SOURCE
#define _XOPEN_SOURCE
#endif
#include <ucontext.h>
#else
#define USE_ASM_CONTEXT 1
#include "swoole_asm_context.h"
#endif

#if defined(HAVE_VALGRIND) && !defined(HAVE_KQUEUE)
#define USE_VALGRIND 1
#include <valgrind/valgrind.h>
#endif

#ifdef USE_UCONTEXT
typedef ucontext_t coroutine_context_t;
#elif defined(USE_ASM_CONTEXT)
typedef fcontext_t coroutine_context_t;
#endif

typedef std::function<void(void *)> CoroutineFunc;

namespace swoole {
namespace coroutine {

class Context {
  public:
    Context(size_t stack_size, CoroutineFunc fn, void *private_data);
    ~Context();
    bool swap_in();
    bool swap_out();
#if !defined(SW_USE_THREAD_CONTEXT) && defined(SW_CONTEXT_DETECT_STACK_USAGE)
    ssize_t get_stack_usage();
#endif
#ifndef SW_USE_THREAD_CONTEXT
    char *get_stack() const {
        return stack_;
    }

    size_t get_stack_size() const {
        return stack_size_;
    }
#endif
    bool is_end() const {
        return end_;
    }

  protected:
    CoroutineFunc fn_;
#ifdef SW_USE_THREAD_CONTEXT
    std::thread thread_;
    std::mutex lock_;
    std::mutex *swap_lock_;
#else
    coroutine_context_t ctx_;
    coroutine_context_t swap_ctx_;
    char *stack_;
    uint32_t stack_size_;
#endif
#ifdef USE_VALGRIND
    uint32_t valgrind_stack_id;
#endif
    void *private_data_;
    bool end_;

    static void context_func(void *arg);
};

}  // namespace coroutine
}  // namespace swoole

Filemanager

Name Type Size Permission Actions
swoole.h File 22.85 KB 0644
swoole_api.h File 3.39 KB 0644
swoole_asm_context.h File 1.76 KB 0644
swoole_async.h File 3.7 KB 0644
swoole_atomic.h File 2.15 KB 0644
swoole_base64.h File 1.29 KB 0644
swoole_buffer.h File 2.28 KB 0644
swoole_c_api.h File 2.19 KB 0644
swoole_channel.h File 2.34 KB 0644
swoole_client.h File 8.41 KB 0644
swoole_config.h File 8.84 KB 0644
swoole_coroutine.h File 8.96 KB 0644
swoole_coroutine_c_api.h File 4.9 KB 0644
swoole_coroutine_channel.h File 4.18 KB 0644
swoole_coroutine_context.h File 2.59 KB 0644
swoole_coroutine_socket.h File 18.85 KB 0644
swoole_coroutine_system.h File 3.48 KB 0644
swoole_dtls.h File 2.41 KB 0644
swoole_error.h File 5.85 KB 0644
swoole_file.h File 4.09 KB 0644
swoole_file_hook.h File 2.86 KB 0644
swoole_hash.h File 9.69 KB 0644
swoole_heap.h File 1.79 KB 0644
swoole_http.h File 6.99 KB 0644
swoole_http2.h File 8.38 KB 0644
swoole_lock.h File 2.64 KB 0644
swoole_log.h File 15.72 KB 0644
swoole_lru_cache.h File 3.17 KB 0644
swoole_memory.h File 2.75 KB 0644
swoole_message_bus.h File 5.53 KB 0644
swoole_mime_type.h File 1.44 KB 0644
swoole_mqtt.h File 2.18 KB 0644
swoole_msg_queue.h File 1.92 KB 0644
swoole_pipe.h File 2.64 KB 0644
swoole_process_pool.h File 8.88 KB 0644
swoole_protocol.h File 5.32 KB 0644
swoole_proxy.h File 2.14 KB 0644
swoole_reactor.h File 11.25 KB 0644
swoole_redis.h File 2.09 KB 0644
swoole_server.h File 39.62 KB 0644
swoole_signal.h File 1.68 KB 0644
swoole_socket.h File 17.61 KB 0644
swoole_socket_hook.h File 2.23 KB 0644
swoole_ssl.h File 4.94 KB 0644
swoole_static_handler.h File 4.7 KB 0644
swoole_string.h File 8.06 KB 0644
swoole_table.h File 7.35 KB 0644
swoole_timer.h File 4.05 KB 0644
swoole_util.h File 5.58 KB 0644
swoole_version.h File 2.21 KB 0644
swoole_websocket.h File 4.53 KB 0644
swoole_wheel_timer.h File 2.48 KB 0644