????JFIF??x?x????'
| Server IP : 104.21.30.238 / Your IP : 216.73.216.87 Web Server : LiteSpeed System : Linux premium151.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64 User : tempvsty ( 647) PHP Version : 8.0.30 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /proc/./thread-self/root/opt/alt/php80/usr/include/php/ext/swoole/include/ |
Upload File : |
/*
+----------------------------------------------------------------------+
| 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: Xinyu Zhu <xyzhu1120@gmail.com> |
| shiguangqi <shiguangqi2008@gmail.com> |
| Twosee <twose@qq.com> |
| Tianfeng Han <rango@swoole.com> |
+----------------------------------------------------------------------+
*/
#pragma once
#include "swoole.h"
#include "swoole_lock.h"
namespace swoole {
enum ChannelFlag {
SW_CHAN_LOCK = 1u << 1,
SW_CHAN_NOTIFY = 1u << 2,
SW_CHAN_SHM = 1u << 3,
};
struct Channel {
off_t head;
off_t tail;
size_t size;
char head_tag;
char tail_tag;
int num;
int max_num;
/**
* Data length, excluding structure
*/
size_t bytes;
int flags;
int maxlen;
/**
* memory point
*/
void *mem;
Lock *lock;
Pipe *notify_pipe;
bool empty() {
return num == 0;
}
bool full() {
return ((head == tail && tail_tag != head_tag) || (bytes + sizeof(int) * num == size));
}
int pop(void *out_buf, int buffer_length);
int push(const void *in_data, int data_length);
int out(void *out_buf, int buffer_length);
int in(const void *in_data, int data_length);
int peek(void *out, int buffer_length);
int wait();
int notify();
void destroy();
void print();
int count() {
return num;
}
int get_bytes() {
return bytes;
}
static Channel *make(size_t size, size_t maxlen, int flags);
};
} // namespace swoole