コード例 #1
0
    def run(self):
        self.provider = StaticProvider(__name__)

        self.fieldNames = SharedPV(initial=NTScalar('as').wrap(
            {'value': ['pid%02x' % i for i in range(31)]}),
                                   handler=DefaultPVHandler(self))

        # 'i' (integer) or 'f' (float)
        self.fieldTypes = SharedPV(initial=NTScalar('aB').wrap(
            {'value': [ord('i')] * 31}),
                                   handler=DefaultPVHandler(self))

        self.fieldMask = SharedPV(initial=NTScalar('I').wrap({'value':
                                                              0x8000}),
                                  handler=DefaultPVHandler(self))

        self.payload = SharedPV(initial=Value(Type([]), {}),
                                handler=DefaultPVHandler(self))

        print('Hosting {:}HPS:FIELDMASK'.format(self.prefix))
        self.provider.add(self.prefix + 'HPS:FIELDNAMES', self.fieldNames)
        self.provider.add(self.prefix + 'HPS:FIELDTYPES', self.fieldTypes)
        self.provider.add(self.prefix + 'HPS:FIELDMASK', self.fieldMask)
        self.provider.add(self.prefix + 'PAYLOAD', self.payload)
        self.update()

        try:
            Server.forever(providers=[self.provider])
        except:
            print('Server exited')
コード例 #2
0
ファイル: mailbox_server.py プロジェクト: princessirabor/p4p
def main(args):
    provider = StaticProvider('mailbox')  # 'mailbox' is an arbitrary name

    pvs = [
    ]  # we must keep a reference in order to keep the Handler from being collected
    for name in args.name:
        pv = SharedPV(initial=types['int'], handler=MailboxHandler())

        provider.add(name, pv)
        pvs.append(pv)

    Server.forever(providers=[provider])

    print('Done')
コード例 #3
0
 def forever(self):
     Server.forever(providers=[self.provider])
コード例 #4
0
 def start_server(self) -> None:
     """
     Starts the server and runs until KeyboardInterrupt.
     """
     print("Starting Server...")
     Server.forever(providers=[providers])
コード例 #5
0
    def start_server(self):

        Server.forever(providers=[self.providers])
コード例 #6
0
        provider.add(name, pv)
        pvs[name] = pv
        names = list(pvs)  # makes a copy to ensure consistency outside lock

    _log.info("Added mailbox %s", name)
    listpv.post(names)
    op.done()


@delpv.rpc
def remover(pv, op):
    name = op.value().query.name

    with pvs_lock:
        if name not in pvs:
            op.done(error="PV doesn't exists")
            return
        pv = pvs.pop(name)
        provider.remove(name)
        names = list(pvs)  # makes a copy to ensure consistency outside lock

    _log.info("Removed mailbox %s", name)
    listpv.post(names)

    op.done()


Server.forever(providers=[provider])

print('Done')
コード例 #7
0
ファイル: image_server.py プロジェクト: mdavidsaver/p4p-dev
    P.add_argument('pvname')
    P.add_argument('-g',
                   '--gray',
                   action='store_const',
                   const=True,
                   default=True)
    P.add_argument('-C',
                   '--color',
                   action='store_const',
                   const=False,
                   dest='gray')
    P.add_argument('-d',
                   '--debug',
                   action='store_const',
                   const=logging.DEBUG,
                   default=logging.INFO)
    return P.parse_args()


args = getargs()

logging.basicConfig(level=args.debug)

pv = SharedPV(nt=NTNDArray(), initial=face(gray=args.gray))

print('serving pv:', args.pvname)

Server.forever(providers=[{
    args.pvname: pv,
}])
コード例 #8
0
ファイル: test_model_server.py プロジェクト: slaclab/meme
             ('R34', 'd'), ('R35', 'd'), ('R36', 'd'), ('R41', 'd'),
             ('R42', 'd'), ('R43', 'd'), ('R44', 'd'), ('R45', 'd'),
             ('R46', 'd'), ('R51', 'd'), ('R52', 'd'), ('R53', 'd'),
             ('R54', 'd'), ('R55', 'd'), ('R56', 'd'), ('R61', 'd'),
             ('R62', 'd'), ('R63', 'd'), ('R64', 'd'), ('R65', 'd'),
             ('R66', 'd')]
rmat_table = NTTable(rmat_cols)
rows = [{key: rmat_data['value'][key][i]
         for key, _ in rmat_cols}
        for i in range(0, len(rmat_data['value']['ELEMENT_NAME']))]
rmat_vals = rmat_table.wrap(rows)
rmat_pv = SharedPV(nt=rmat_table, initial=rmat_vals)


@twiss_pv.rpc
def twiss_request_handler(pv, op):
    op.done(twiss_vals)


@rmat_pv.rpc
def rmat_request_handler(pv, op):
    op.done(rmat_vals)


print("Starting Model Service Test Server!")
Server.forever(providers=[{
    'MODEL:TWISS:EXTANT:FULLMACHINE': twiss_pv,
    'MODEL:TWISS:DESIGN:FULLMACHINE': twiss_pv,
    'MODEL:RMATS:EXTANT:FULLMACHINE': rmat_pv,
    'MODEL:RMATS:DESIGN:FULLMACHINE': rmat_pv
}])
コード例 #9
0
from p4p.nt import NTScalar
from p4p.server import Server
from p4p.server.thread import SharedPV

pv1 = SharedPV(nt=NTScalar('d'), initial=0.0)
pv2 = SharedPV(nt=NTScalar('d'), initial=4.2)
pv3 = SharedPV(nt=NTScalar('d'), initial=24.2346692)


@pv1.put
#@pv2.put
#@pv3.put
def handleput(pv, op):
    print(
        f"You changed my value to: {op.value().raw['value']}, I used to be: {pv.current().raw['value']}"
    )
    pv.post(op.value())
    op.done()


print("Server running....")
Server.forever(providers=[{
    'p4p:pv1': pv1,
    'p4p:pv2': pv2,
    'p4p:pv3': pv3,
}])