📄 oamtask.cc
字号:
#include "oamTask.h"#include <unistd.h>#include <string.h>#include <stdio.h>#include <errno.h>CommonData::CommonData():length_m(0) , rawData_m(0) {}CommonData::CommonData(char * rawData , int length) :length_m(length) , rawData_m(rawData) {}CommonData::~CommonData(){ rawData_m = 0; length_m = 0;}int CommonData::getLength() const{ return length_m;}void CommonData::setLength(int length){ length_m = length;}char * CommonData::getData() const{ return rawData_m;}void CommonData::setData(char * rawData){ rawData_m = rawData;}OamTask::OamTask(){ queue_m[FD_READ] = -1; queue_m[FD_WRITE] = -1;}OamTask::~OamTask(){ if (queue_m[FD_READ] != -1) { close(queue_m[FD_READ]); queue_m[FD_READ] = -1; } if (queue_m[FD_WRITE] != -1) { close(queue_m[FD_WRITE]); queue_m[FD_WRITE] = -1; }}int OamTask::initialize(){ if (pipe(queue_m) == -1) { return -1; } return 0;}int OamTask::putq(CommonData & commonData){ int length = commonData.getLength(); char * data = commonData.getData(); if (length <= 0 || data == 0) { perror("the length or the data ptr is equal with 0."); return -1; } if (write(queue_m[FD_WRITE] , &length , sizeof(int)) != sizeof(int)) { if (errno == EINTR) { return 0; } perror("write syscall failed."); return -1; } if (write(queue_m[FD_WRITE] , data , length) != length) { if (errno == EINTR) { return 0; } perror("write syscall failed."); return -1; } return 0; }int OamTask::getq(CommonData & commonData){ int length = 0; if (read(queue_m[FD_READ] , &length , sizeof(int)) != sizeof(int)) { if (errno == EINTR) { return 0; } perror("read syscall failed."); return -1; } if (length <= 0) { perror("the length is less and equal than 0."); return -1; } char * data = new char[length]; memset(data , 0x00 , length); if (read(queue_m[FD_READ] , data , length) != length) { if (errno == EINTR) { return 0; } perror("read syscall failed."); return -1; } commonData.setLength(length); commonData.setData(data); return 0;}int OamTask::handle(CommonData * pData){ return 0;}int OamTask::run(){ while (isRunning()) { CommonData commonData; if (getq(commonData) == -1) { perror("getq failed."); return -1; } if (handle(&commonData) == -1) { char * data = commonData.getData(); delete [] data; data = 0; perror("handle failed."); return -1; } char * data = commonData.getData(); if (data) { delete [] data; data = 0; } } return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -