|
|
|
@@ -30,7 +30,7 @@ using nlohmann::json; |
|
|
|
namespace mindspore { |
|
|
|
namespace serving { |
|
|
|
|
|
|
|
const int BUF_MAX = 0x1FFFFF; |
|
|
|
const int BUF_MAX = 0x7FFFFFFF; |
|
|
|
static constexpr char HTTP_DATA[] = "data"; |
|
|
|
static constexpr char HTTP_TENSOR[] = "tensor"; |
|
|
|
enum HTTP_TYPE { TYPE_DATA = 0, TYPE_TENSOR }; |
|
|
|
@@ -46,10 +46,12 @@ Status GetPostMessage(struct evhttp_request *req, std::string *buf) { |
|
|
|
if (post_size == 0) { |
|
|
|
ERROR_INFER_STATUS(status, INVALID_INPUTS, "http message invalid"); |
|
|
|
return status; |
|
|
|
} else if (post_size > BUF_MAX) { |
|
|
|
ERROR_INFER_STATUS(status, INVALID_INPUTS, "http message is bigger than 0x7FFFFFFF."); |
|
|
|
return status; |
|
|
|
} else { |
|
|
|
size_t copy_len = post_size > BUF_MAX ? BUF_MAX : post_size; |
|
|
|
buf->resize(copy_len); |
|
|
|
memcpy(buf->data(), evbuffer_pullup(req->input_buffer, -1), copy_len); |
|
|
|
buf->resize(post_size); |
|
|
|
memcpy(buf->data(), evbuffer_pullup(req->input_buffer, -1), post_size); |
|
|
|
return status; |
|
|
|
} |
|
|
|
} |
|
|
|
@@ -85,7 +87,7 @@ Status CheckMessageValid(const json &message_info, HTTP_TYPE *type) { |
|
|
|
count++; |
|
|
|
} |
|
|
|
if (count != 1) { |
|
|
|
ERROR_INFER_STATUS(status, INVALID_INPUTS, "http message must have only one type of (data, tensor, text)"); |
|
|
|
ERROR_INFER_STATUS(status, INVALID_INPUTS, "http message must have only one type of (data, tensor)"); |
|
|
|
return status; |
|
|
|
} |
|
|
|
return status; |
|
|
|
@@ -206,7 +208,7 @@ Status TransDataToPredictRequest(const json &message_info, PredictRequest *reque |
|
|
|
} |
|
|
|
for (int i = 0; i < request->data_size(); i++) { |
|
|
|
for (size_t j = 0; j < tensor_list[i].shape().size(); ++j) { |
|
|
|
request->mutable_data(i)->mutable_tensor_shape()->add_dims(tensor_list[i].shape()[i]); |
|
|
|
request->mutable_data(i)->mutable_tensor_shape()->add_dims(tensor_list[i].shape()[j]); |
|
|
|
} |
|
|
|
} |
|
|
|
return SUCCESS; |
|
|
|
|