http://git-wip-us.apache.org/repos/asf/celix/blob/2a670f26/remote_services/discovery_common/include/endpoint_descriptor_common.h ---------------------------------------------------------------------- diff --git a/remote_services/discovery_common/include/endpoint_descriptor_common.h b/remote_services/discovery_common/include/endpoint_descriptor_common.h new file mode 100644 index 0000000..a186a18 --- /dev/null +++ b/remote_services/discovery_common/include/endpoint_descriptor_common.h @@ -0,0 +1,61 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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. + */ +/* + * endpoint_descriptor_common.h + * + * \date Aug 8, 2014 + * \author <a href="mailto:[email protected]">Apache Celix Project Team</a> + * \copyright Apache License, Version 2.0 + */ + +#ifndef ENDPOINT_DESCRIPTOR_COMMON_H_ +#define ENDPOINT_DESCRIPTOR_COMMON_H_ + +/* + * Private constant & enum definitions for endpoint descriptor reader and writer, not needed for normal usage of the reader and writer. + */ + +typedef enum { + VALUE_TYPE_STRING, + VALUE_TYPE_LONG, + VALUE_TYPE_DOUBLE, + VALUE_TYPE_FLOAT, + VALUE_TYPE_INTEGER, + VALUE_TYPE_BYTE, + VALUE_TYPE_CHAR, + VALUE_TYPE_BOOLEAN, + VALUE_TYPE_SHORT, +} valueType; + +static const __attribute__((unused)) xmlChar* XML = (const xmlChar*) "xml"; +static const __attribute__((unused)) xmlChar* XMLNS = (const xmlChar*) "http://www.osgi.org/xmlns/rsa/v1.0.0"; + +static const __attribute__((unused)) xmlChar* ENDPOINT_DESCRIPTIONS = (const xmlChar*) "endpoint-descriptions"; +static const xmlChar* ENDPOINT_DESCRIPTION = (const xmlChar*) "endpoint-description"; + +static const xmlChar* ARRAY = (const xmlChar*) "array"; +static const __attribute__((unused)) xmlChar* LIST = (const xmlChar*) "list"; +static const __attribute__((unused)) xmlChar* SET = (const xmlChar*) "set"; + +static const xmlChar* PROPERTY = (const xmlChar*) "property"; +static const xmlChar* NAME = (const xmlChar*) "name"; +static const xmlChar* VALUE = (const xmlChar*) "value"; +static const xmlChar* VALUE_TYPE = (const xmlChar*) "value-type"; + +#endif /* ENDPOINT_DESCRIPTOR_COMMON_H_ */
http://git-wip-us.apache.org/repos/asf/celix/blob/2a670f26/remote_services/discovery_common/include/endpoint_descriptor_reader.h ---------------------------------------------------------------------- diff --git a/remote_services/discovery_common/include/endpoint_descriptor_reader.h b/remote_services/discovery_common/include/endpoint_descriptor_reader.h new file mode 100644 index 0000000..7a05d9e --- /dev/null +++ b/remote_services/discovery_common/include/endpoint_descriptor_reader.h @@ -0,0 +1,42 @@ +/** + *Licensed to the Apache Software Foundation (ASF) under one + *or more contributor license agreements. See the NOTICE file + *distributed with this work for additional information + *regarding copyright ownership. The ASF licenses this file + *to you 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. + */ +/* + * endpoint_descriptor_reader.h + * + * \date 26 Jul 2014 + * \author <a href="mailto:[email protected]">Apache Celix Project Team</a> + * \copyright Apache License, Version 2.0 + */ + +#ifndef ENDPOINT_DESCRIPTOR_READER_H_ +#define ENDPOINT_DESCRIPTOR_READER_H_ + +#include "endpoint_discovery_poller.h" +#include "celix_errno.h" +#include "array_list.h" + +typedef struct endpoint_descriptor_reader *endpoint_descriptor_reader_pt; + +celix_status_t endpointDescriptorReader_create(endpoint_discovery_poller_pt poller, endpoint_descriptor_reader_pt *reader); +celix_status_t endpointDescriptorReader_destroy(endpoint_descriptor_reader_pt reader); + +celix_status_t endpointDescriptorReader_parseDocument(endpoint_descriptor_reader_pt reader, char *document, array_list_pt *endpoints); + + +#endif /* ENDPOINT_DESCRIPTOR_READER_H_ */ http://git-wip-us.apache.org/repos/asf/celix/blob/2a670f26/remote_services/discovery_common/include/endpoint_descriptor_writer.h ---------------------------------------------------------------------- diff --git a/remote_services/discovery_common/include/endpoint_descriptor_writer.h b/remote_services/discovery_common/include/endpoint_descriptor_writer.h new file mode 100644 index 0000000..3c5a9be --- /dev/null +++ b/remote_services/discovery_common/include/endpoint_descriptor_writer.h @@ -0,0 +1,39 @@ +/** + *Licensed to the Apache Software Foundation (ASF) under one + *or more contributor license agreements. See the NOTICE file + *distributed with this work for additional information + *regarding copyright ownership. The ASF licenses this file + *to you 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. + */ +/* + * endpoint_descriptor_writer.h + * + * \date 26 Jul 2014 + * \author <a href="mailto:[email protected]">Apache Celix Project Team</a> + * \copyright Apache License, Version 2.0 + */ + +#ifndef ENDPOINT_DESCRIPTOR_WRITER_H_ +#define ENDPOINT_DESCRIPTOR_WRITER_H_ + +#include "celix_errno.h" +#include "array_list.h" + +typedef struct endpoint_descriptor_writer *endpoint_descriptor_writer_pt; + +celix_status_t endpointDescriptorWriter_create(endpoint_descriptor_writer_pt *writer); +celix_status_t endpointDescriptorWriter_destroy(endpoint_descriptor_writer_pt writer); +celix_status_t endpointDescriptorWriter_writeDocument(endpoint_descriptor_writer_pt writer, array_list_pt endpoints, char **document); + +#endif /* ENDPOINT_DESCRIPTOR_WRITER_H_ */ http://git-wip-us.apache.org/repos/asf/celix/blob/2a670f26/remote_services/discovery_common/include/endpoint_discovery_poller.h ---------------------------------------------------------------------- diff --git a/remote_services/discovery_common/include/endpoint_discovery_poller.h b/remote_services/discovery_common/include/endpoint_discovery_poller.h new file mode 100644 index 0000000..d344e55 --- /dev/null +++ b/remote_services/discovery_common/include/endpoint_discovery_poller.h @@ -0,0 +1,56 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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. + */ +/* + * endpoint_discovery_poller.h + * + * \date 3 Jul 2014 + * \author <a href="mailto:[email protected]">Apache Celix Project Team</a> + * \copyright Apache License, Version 2.0 + */ + +#ifndef ENDPOINT_DISCOVERY_POLLER_H_ +#define ENDPOINT_DISCOVERY_POLLER_H_ + +#include "celix_errno.h" +#include "discovery.h" +#include "log_helper.h" + +struct endpoint_discovery_poller { + discovery_pt discovery; + hash_map_pt entries; + log_helper_pt* loghelper; + + celix_thread_mutex_t pollerLock; + celix_thread_t pollerThread; + + unsigned int poll_interval; + volatile bool running; +}; + +typedef struct endpoint_discovery_poller *endpoint_discovery_poller_pt; + +celix_status_t endpointDiscoveryPoller_create(discovery_pt discovery, bundle_context_pt context, endpoint_discovery_poller_pt *poller); +celix_status_t endpointDiscoveryPoller_destroy(endpoint_discovery_poller_pt poller); + +celix_status_t endpointDiscoveryPoller_addDiscoveryEndpoint(endpoint_discovery_poller_pt poller, char *url); +celix_status_t endpointDiscoveryPoller_removeDiscoveryEndpoint(endpoint_discovery_poller_pt poller, char *url); + +celix_status_t endpointDiscoveryPoller_getDiscoveryEndpoints(endpoint_discovery_poller_pt poller, array_list_pt urls); + +#endif /* ENDPOINT_DISCOVERY_POLLER_H_ */ http://git-wip-us.apache.org/repos/asf/celix/blob/2a670f26/remote_services/discovery_common/include/endpoint_discovery_server.h ---------------------------------------------------------------------- diff --git a/remote_services/discovery_common/include/endpoint_discovery_server.h b/remote_services/discovery_common/include/endpoint_discovery_server.h new file mode 100644 index 0000000..51082b5 --- /dev/null +++ b/remote_services/discovery_common/include/endpoint_discovery_server.h @@ -0,0 +1,81 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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. + */ +/* + * endpoint_discovery_server.h + * + * \date Aug 12, 2014 + * \author <a href="mailto:[email protected]">Apache Celix Project Team</a> + * \copyright Apache License, Version 2.0 + */ + +#ifndef ENDPOINT_DISCOVERY_SERVER_H_ +#define ENDPOINT_DISCOVERY_SERVER_H_ + +#include "celix_errno.h" +#include "discovery.h" + +typedef struct endpoint_discovery_server *endpoint_discovery_server_pt; + +/** + * Creates and starts a new instance of an endpoint discovery server. + * + * @param discovery [in] the discovery service itself; + * @param context [in] the bundle context; + * @param server [out] the pointer to the created instance. + * @return CELIX_SUCCESS when successful. + */ +celix_status_t endpointDiscoveryServer_create(discovery_pt discovery, bundle_context_pt context, endpoint_discovery_server_pt *server); + +/** + * Stops and destroys a given instance of an endpoint discovery server. + * + * @param server [in] the pointer to the instance to destroy. + * @return CELIX_SUCCESS when successful. + */ +celix_status_t endpointDiscoveryServer_destroy(endpoint_discovery_server_pt server); + +/** + * Adds a given endpoint description to expose through the given discovery server. + * + * @param server [in] the endpoint discovery server to expose the endpoint through; + * @param endpoint [in] the endpoint description to expose. + * @return CELIX_SUCCESS when successful. + */ +celix_status_t endpointDiscoveryServer_addEndpoint(endpoint_discovery_server_pt server, endpoint_description_pt endpoint); + +/** + * Removes a given endpoint description from exposure through the given discovery server. + * + * @param server [in] the endpoint discovery server to remove the endpoint from; + * @param endpoint [in] the endpoint description to remove. + * @return CELIX_SUCCESS when successful. + */ +celix_status_t endpointDiscoveryServer_removeEndpoint( endpoint_discovery_server_pt server, endpoint_description_pt endpoint); + +/** + * Returns the url, which is used by the discovery server to announce the endpoints + * + * @param server [in] the endpoint discovery server to retrieve the url from + * @param url [out] url which is used to announce the endpoints. + * @return CELIX_SUCCESS when successful. + */ +celix_status_t endpointDiscoveryServer_getUrl(endpoint_discovery_server_pt server, char* url); + + +#endif /* ENDPOINT_DISCOVERY_SERVER_H_ */
