core-extra/daemon/core/api/coreapi2.py

83 lines
2.6 KiB
Python
Raw Normal View History

#
# CORE
# Copyright (c)2016 the Boeing Company.
# See the LICENSE file included in this distribution.
#
# authors: Rod Santiago
# John Kharouta
#
import core_pb2
import struct
from core.api.coreapi import *
class CoreMessage(object):
hdrfmt = "H"
hdrsiz = struct.calcsize(hdrfmt)
@staticmethod
def toLegacyApi(data):
message = core_pb2.CoreMessage()
message.ParseFromString(data)
if message.HasField('session'):
return CoreMessage.translateSessionMsg(message.session)
if message.HasField('experiment'):
return CoreMessage.translateExperimentMsg(message.experiment)
if message.HasField('event'):
return CoreMessage.translateEvent(message.event)
@staticmethod
def toApi2(messages):
for msg in messages:
msgtype, msgflags, msglen = coreapi.CoreMessage.unpackhdr(msg)
data = msg[coreapi.CoreMessage.hdrsiz:]
if msgtype == coreapi.CORE_API_REG_MSG:
pass
elif msgtype == coreapi.CORE_API_SESS_MSG:
@staticmethod
def translateSessionMsg(message):
print 'Received session request message'
msgs = []
msgs.append(CoreMessage.createRegisterMessage(0, gui='true'))
return msgs
@staticmethod
def translateExperimentMsg(message):
print 'Received experiment message'
@staticmethod
def translateEvent(event):
print 'Received event'
@staticmethod
def createRegisterMessage(flags, wireless=None, mobility=None, utility=None, execsrv=None,
gui=None, emulsrv=None, session=None):
tlvdata = ""
if wireless is not None:
tlvdata = tlvdata + CoreRegTlv.pack(CORE_TLV_REG_WIRELESS,wireless)
if mobility is not None:
tlvdata = tlvdata + CoreRegTlv.pack(CORE_TLV_REG_MOBILITY,mobility)
if utility is not None:
tlvdata = tlvdata + CoreRegTlv.pack(CORE_TLV_REG_UTILITY,utility)
if execsrv is not None:
tlvdata = tlvdata + CoreRegTlv.pack(CORE_TLV_REG_EXECSRV,execsrv)
if gui is not None:
tlvdata = tlvdata + CoreRegTlv.pack(CORE_TLV_REG_GUI,gui)
if emulsrv is not None:
tlvdata = tlvdata + CoreRegTlv.pack(CORE_TLV_REG_EMULSRV,emulsrv)
if session is not None:
tlvdata = tlvdata + CoreRegTlv.pack(CORE_TLV_REG_SESSION,session)
hdr = struct.pack(CoreRegMessage.hdrfmt, CoreRegMessage.msgtype, flags, len(tlvdata))
return CoreRegMessage(flags, hdr, tlvdata)