mirror of
https://github.com/osrf/gazebo_models.git
synced 2025-09-15 12:58:56 +08:00
Adding the start of a server for the models
This commit is contained in:
parent
6692bd5c02
commit
b8ed5e3645
28
server/client.py
Executable file
28
server/client.py
Executable file
@ -0,0 +1,28 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import socket
|
||||||
|
import request_pb2
|
||||||
|
|
||||||
|
TCP_IP = '127.0.0.1'
|
||||||
|
TCP_PORT = 5014
|
||||||
|
BUFFER_SIZE = 1024
|
||||||
|
|
||||||
|
msg = request_pb2.Request()
|
||||||
|
msg.id = int(0)
|
||||||
|
msg.request = "models"
|
||||||
|
|
||||||
|
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||||
|
s.connect((TCP_IP, TCP_PORT))
|
||||||
|
s.send(msg.SerializeToString())
|
||||||
|
data = s.recv(BUFFER_SIZE)
|
||||||
|
s.close()
|
||||||
|
|
||||||
|
response = request_pb2.Response()
|
||||||
|
response.ParseFromString(data)
|
||||||
|
|
||||||
|
model_list = request_pb2.ModelList()
|
||||||
|
model_list.ParseFromString(response.data)
|
||||||
|
|
||||||
|
|
||||||
|
print "response:", response
|
||||||
|
print "models:", model_list.model
|
||||||
7
server/manifest.xml
Normal file
7
server/manifest.xml
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
<models>
|
||||||
|
<model>turtlebot</model>
|
||||||
|
<model>willowgarage</model>
|
||||||
|
<model>kinect</model>
|
||||||
|
<model>pioneer2dx</model>
|
||||||
|
</models>
|
||||||
21
server/request.proto
Normal file
21
server/request.proto
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
package gazebo_models;
|
||||||
|
|
||||||
|
message Request
|
||||||
|
{
|
||||||
|
required int32 id = 1;
|
||||||
|
required string request = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
message Response
|
||||||
|
{
|
||||||
|
required int32 id = 1;
|
||||||
|
required string request = 2;
|
||||||
|
required string response = 3;
|
||||||
|
optional string type = 4;
|
||||||
|
optional bytes data = 5;
|
||||||
|
}
|
||||||
|
|
||||||
|
message ModelList
|
||||||
|
{
|
||||||
|
repeated string model = 1;
|
||||||
|
}
|
||||||
159
server/request_pb2.py
Normal file
159
server/request_pb2.py
Normal file
@ -0,0 +1,159 @@
|
|||||||
|
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
||||||
|
|
||||||
|
from google.protobuf import descriptor
|
||||||
|
from google.protobuf import message
|
||||||
|
from google.protobuf import reflection
|
||||||
|
from google.protobuf import descriptor_pb2
|
||||||
|
# @@protoc_insertion_point(imports)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
DESCRIPTOR = descriptor.FileDescriptor(
|
||||||
|
name='request.proto',
|
||||||
|
package='gazebo_models',
|
||||||
|
serialized_pb='\n\rrequest.proto\x12\rgazebo_models\"&\n\x07Request\x12\n\n\x02id\x18\x01 \x02(\x05\x12\x0f\n\x07request\x18\x02 \x02(\t\"U\n\x08Response\x12\n\n\x02id\x18\x01 \x02(\x05\x12\x0f\n\x07request\x18\x02 \x02(\t\x12\x10\n\x08response\x18\x03 \x02(\t\x12\x0c\n\x04type\x18\x04 \x01(\t\x12\x0c\n\x04\x64\x61ta\x18\x05 \x01(\x0c\"\x1a\n\tModelList\x12\r\n\x05model\x18\x01 \x03(\t')
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
_REQUEST = descriptor.Descriptor(
|
||||||
|
name='Request',
|
||||||
|
full_name='gazebo_models.Request',
|
||||||
|
filename=None,
|
||||||
|
file=DESCRIPTOR,
|
||||||
|
containing_type=None,
|
||||||
|
fields=[
|
||||||
|
descriptor.FieldDescriptor(
|
||||||
|
name='id', full_name='gazebo_models.Request.id', index=0,
|
||||||
|
number=1, type=5, cpp_type=1, label=2,
|
||||||
|
has_default_value=False, default_value=0,
|
||||||
|
message_type=None, enum_type=None, containing_type=None,
|
||||||
|
is_extension=False, extension_scope=None,
|
||||||
|
options=None),
|
||||||
|
descriptor.FieldDescriptor(
|
||||||
|
name='request', full_name='gazebo_models.Request.request', index=1,
|
||||||
|
number=2, type=9, cpp_type=9, label=2,
|
||||||
|
has_default_value=False, default_value=unicode("", "utf-8"),
|
||||||
|
message_type=None, enum_type=None, containing_type=None,
|
||||||
|
is_extension=False, extension_scope=None,
|
||||||
|
options=None),
|
||||||
|
],
|
||||||
|
extensions=[
|
||||||
|
],
|
||||||
|
nested_types=[],
|
||||||
|
enum_types=[
|
||||||
|
],
|
||||||
|
options=None,
|
||||||
|
is_extendable=False,
|
||||||
|
extension_ranges=[],
|
||||||
|
serialized_start=32,
|
||||||
|
serialized_end=70,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
_RESPONSE = descriptor.Descriptor(
|
||||||
|
name='Response',
|
||||||
|
full_name='gazebo_models.Response',
|
||||||
|
filename=None,
|
||||||
|
file=DESCRIPTOR,
|
||||||
|
containing_type=None,
|
||||||
|
fields=[
|
||||||
|
descriptor.FieldDescriptor(
|
||||||
|
name='id', full_name='gazebo_models.Response.id', index=0,
|
||||||
|
number=1, type=5, cpp_type=1, label=2,
|
||||||
|
has_default_value=False, default_value=0,
|
||||||
|
message_type=None, enum_type=None, containing_type=None,
|
||||||
|
is_extension=False, extension_scope=None,
|
||||||
|
options=None),
|
||||||
|
descriptor.FieldDescriptor(
|
||||||
|
name='request', full_name='gazebo_models.Response.request', index=1,
|
||||||
|
number=2, type=9, cpp_type=9, label=2,
|
||||||
|
has_default_value=False, default_value=unicode("", "utf-8"),
|
||||||
|
message_type=None, enum_type=None, containing_type=None,
|
||||||
|
is_extension=False, extension_scope=None,
|
||||||
|
options=None),
|
||||||
|
descriptor.FieldDescriptor(
|
||||||
|
name='response', full_name='gazebo_models.Response.response', index=2,
|
||||||
|
number=3, type=9, cpp_type=9, label=2,
|
||||||
|
has_default_value=False, default_value=unicode("", "utf-8"),
|
||||||
|
message_type=None, enum_type=None, containing_type=None,
|
||||||
|
is_extension=False, extension_scope=None,
|
||||||
|
options=None),
|
||||||
|
descriptor.FieldDescriptor(
|
||||||
|
name='type', full_name='gazebo_models.Response.type', index=3,
|
||||||
|
number=4, type=9, cpp_type=9, label=1,
|
||||||
|
has_default_value=False, default_value=unicode("", "utf-8"),
|
||||||
|
message_type=None, enum_type=None, containing_type=None,
|
||||||
|
is_extension=False, extension_scope=None,
|
||||||
|
options=None),
|
||||||
|
descriptor.FieldDescriptor(
|
||||||
|
name='data', full_name='gazebo_models.Response.data', index=4,
|
||||||
|
number=5, type=12, cpp_type=9, label=1,
|
||||||
|
has_default_value=False, default_value="",
|
||||||
|
message_type=None, enum_type=None, containing_type=None,
|
||||||
|
is_extension=False, extension_scope=None,
|
||||||
|
options=None),
|
||||||
|
],
|
||||||
|
extensions=[
|
||||||
|
],
|
||||||
|
nested_types=[],
|
||||||
|
enum_types=[
|
||||||
|
],
|
||||||
|
options=None,
|
||||||
|
is_extendable=False,
|
||||||
|
extension_ranges=[],
|
||||||
|
serialized_start=72,
|
||||||
|
serialized_end=157,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
_MODELLIST = descriptor.Descriptor(
|
||||||
|
name='ModelList',
|
||||||
|
full_name='gazebo_models.ModelList',
|
||||||
|
filename=None,
|
||||||
|
file=DESCRIPTOR,
|
||||||
|
containing_type=None,
|
||||||
|
fields=[
|
||||||
|
descriptor.FieldDescriptor(
|
||||||
|
name='model', full_name='gazebo_models.ModelList.model', index=0,
|
||||||
|
number=1, type=9, cpp_type=9, label=3,
|
||||||
|
has_default_value=False, default_value=[],
|
||||||
|
message_type=None, enum_type=None, containing_type=None,
|
||||||
|
is_extension=False, extension_scope=None,
|
||||||
|
options=None),
|
||||||
|
],
|
||||||
|
extensions=[
|
||||||
|
],
|
||||||
|
nested_types=[],
|
||||||
|
enum_types=[
|
||||||
|
],
|
||||||
|
options=None,
|
||||||
|
is_extendable=False,
|
||||||
|
extension_ranges=[],
|
||||||
|
serialized_start=159,
|
||||||
|
serialized_end=185,
|
||||||
|
)
|
||||||
|
|
||||||
|
DESCRIPTOR.message_types_by_name['Request'] = _REQUEST
|
||||||
|
DESCRIPTOR.message_types_by_name['Response'] = _RESPONSE
|
||||||
|
DESCRIPTOR.message_types_by_name['ModelList'] = _MODELLIST
|
||||||
|
|
||||||
|
class Request(message.Message):
|
||||||
|
__metaclass__ = reflection.GeneratedProtocolMessageType
|
||||||
|
DESCRIPTOR = _REQUEST
|
||||||
|
|
||||||
|
# @@protoc_insertion_point(class_scope:gazebo_models.Request)
|
||||||
|
|
||||||
|
class Response(message.Message):
|
||||||
|
__metaclass__ = reflection.GeneratedProtocolMessageType
|
||||||
|
DESCRIPTOR = _RESPONSE
|
||||||
|
|
||||||
|
# @@protoc_insertion_point(class_scope:gazebo_models.Response)
|
||||||
|
|
||||||
|
class ModelList(message.Message):
|
||||||
|
__metaclass__ = reflection.GeneratedProtocolMessageType
|
||||||
|
DESCRIPTOR = _MODELLIST
|
||||||
|
|
||||||
|
# @@protoc_insertion_point(class_scope:gazebo_models.ModelList)
|
||||||
|
|
||||||
|
# @@protoc_insertion_point(module_scope)
|
||||||
BIN
server/request_pb2.pyc
Normal file
BIN
server/request_pb2.pyc
Normal file
Binary file not shown.
64
server/server.py
Executable file
64
server/server.py
Executable file
@ -0,0 +1,64 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import socket
|
||||||
|
import struct
|
||||||
|
from sys import *
|
||||||
|
from xml.dom import minidom
|
||||||
|
|
||||||
|
import request_pb2
|
||||||
|
|
||||||
|
TCP_IP = '127.0.0.1'
|
||||||
|
TCP_PORT = 5018
|
||||||
|
BUFFER_SIZE = 1024
|
||||||
|
|
||||||
|
models = []
|
||||||
|
|
||||||
|
#################################################
|
||||||
|
# Read the main manifest file
|
||||||
|
def read_manifest():
|
||||||
|
xmldoc = minidom.parse('manifest.xml')
|
||||||
|
model_list = xmldoc.getElementsByTagName("model")
|
||||||
|
|
||||||
|
for model in model_list:
|
||||||
|
model_name = model.childNodes[0].data
|
||||||
|
models.append(model_name)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
read_manifest()
|
||||||
|
|
||||||
|
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||||
|
s.bind((TCP_IP, TCP_PORT))
|
||||||
|
s.listen(1)
|
||||||
|
|
||||||
|
conn, addr = s.accept()
|
||||||
|
print 'Connection address:', addr
|
||||||
|
while 1:
|
||||||
|
print "here"
|
||||||
|
request = request_pb2.Request()
|
||||||
|
data = conn.recv(BUFFER_SIZE)
|
||||||
|
if not data:
|
||||||
|
break
|
||||||
|
|
||||||
|
request.ParseFromString(data)
|
||||||
|
|
||||||
|
print "Request: ", request.request
|
||||||
|
|
||||||
|
response = request_pb2.Response()
|
||||||
|
response.id = request.id
|
||||||
|
response.request = request.request
|
||||||
|
|
||||||
|
if request.request == "models":
|
||||||
|
response.response = "success"
|
||||||
|
|
||||||
|
model_list_msg = request_pb2.ModelList()
|
||||||
|
response.type = model_list_msg.DESCRIPTOR.full_name
|
||||||
|
for m in models:
|
||||||
|
model_list_msg.model.append(m)
|
||||||
|
response.data = model_list_msg.SerializeToString()
|
||||||
|
|
||||||
|
print "Response Size:", len(response.SerializeToString())
|
||||||
|
hex_size = hex(len(response.SerializeToString()))
|
||||||
|
conn.send(hex_size.rjust(8))
|
||||||
|
conn.send(response.SerializeToString()) # echo
|
||||||
|
conn.close()
|
||||||
Loading…
Reference in New Issue
Block a user