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