/** * Copyright (C) 2010 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef MOCK_RIL_REQUESTS_H_ #define MOCK_RIL_REQUESTS_H_ #include <queue> #include <pthread.h> #include <v8.h> #include "worker.h" #include "node_object_wrap.h" /** * A request */ struct Request { int request_; Buffer *buffer_; RIL_Token token_; Request(const int request, const Buffer *buffer, const RIL_Token token) : request_(0), buffer_(NULL), token_(0) { Set(request, buffer, token); } ~Request() { delete [] buffer_; } void Set(const int request, const Buffer *buffer, const RIL_Token token) { request_ = request; token_ = token; buffer_ = (Buffer *)buffer; } }; /** * Ril request worker queue. * * Pass requests to mock-ril.js for processing */ class RilRequestWorkerQueue : public WorkerQueue { private: v8::Handle<v8::Context> context_; // TODO: Need a thread-safe queue std::queue<Request *> free_list_; pthread_mutex_t free_list_mutex_; public: /** * Constructor */ RilRequestWorkerQueue(v8::Handle<v8::Context> context); /** * Destructor */ virtual ~RilRequestWorkerQueue(); /** * Add a request to the Queue */ void AddRequest(const int request, const void *data, const size_t datalen, const RIL_Token token); /** * Processes a request sending it to mock-ril.js */ virtual void Process(void *p); }; /** * Initialize module * * @return 0 if no errors */ int requestsInit(v8::Handle<v8::Context> context, RilRequestWorkerQueue **rwq); /** * Run tests */ void testRequests(v8::Handle<v8::Context> context); #endif // MOCK_RIL_REQUESTS_H_