// This file is autogenerated by the hrpc compiler
/* eslint-disable camelcase */
/* eslint-disable space-before-function-paren */
import { c, RPC, RPCStream, RPCRequestStream } from 'hrpc/runtime'
import { getEncoding } from './messages.js'
const methods = new Map([
['@media/create-chat-image-preview', 0],
[0, '@media/create-chat-image-preview'],
['@media/create-chat-video-preview', 1],
[1, '@media/create-chat-video-preview'],
['@media/create-chat-link-preview', 2],
[2, '@media/create-chat-link-preview'],
['@media/create-profile-avatar', 3],
[3, '@media/create-profile-avatar'],
['@media/create-room-avatar', 4],
[4, '@media/create-room-avatar'],
['@media/decode-image', 5],
[5, '@media/decode-image']
])
class HRPC {
constructor(stream) {
this._stream = stream
this._handlers = []
this._requestEncodings = new Map([
['@media/create-chat-image-preview', getEncoding('@media/create-chat-image-preview-request')],
['@media/create-chat-video-preview', getEncoding('@media/create-chat-video-preview-request')],
['@media/create-chat-link-preview', getEncoding('@media/create-chat-link-preview-request')],
['@media/create-profile-avatar', getEncoding('@media/create-profile-avatar-request')],
['@media/create-room-avatar', getEncoding('@media/create-room-avatar-request')],
['@media/decode-image', getEncoding('@media/decode-image-request')]
])
this._responseEncodings = new Map([
[
'@media/create-chat-image-preview',
getEncoding('@media/create-chat-image-preview-response')
],
[
'@media/create-chat-video-preview',
getEncoding('@media/create-chat-video-preview-response')
],
['@media/create-chat-link-preview', getEncoding('@media/create-chat-link-preview-response')],
['@media/create-profile-avatar', getEncoding('@media/create-profile-avatar-response')],
['@media/create-room-avatar', getEncoding('@media/create-room-avatar-response')],
['@media/decode-image', getEncoding('@media/decode-image-response')]
])
this._rpc = new RPC(stream, async (req) => {
const command = methods.get(req.command)
const responseEncoding = this._responseEncodings.get(command)
const requestEncoding = this._requestEncodings.get(command)
if (this._requestIsSend(command)) {
const request = req.data ? c.decode(requestEncoding, req.data) : null
await this._handlers[command](request)
return
}
if (!this._requestIsStream(command) && !this._responseIsStream(command)) {
const request = req.data ? c.decode(requestEncoding, req.data) : null
const response = await this._handlers[command](request)
req.reply(c.encode(responseEncoding, response))
}
if (!this._requestIsStream(command) && this._responseIsStream(command)) {
const request = req.data ? c.decode(requestEncoding, req.data) : null
const responseStream = new RPCStream(
null,
null,
req.createResponseStream(),
responseEncoding
)
responseStream.data = request
await this._handlers[command](responseStream)
}
if (this._requestIsStream(command) && !this._responseIsStream(command)) {
const requestStream = new RPCRequestStream(
req,
responseEncoding,
req.createRequestStream(),
requestEncoding
)
const response = await this._handlers[command](requestStream)
req.reply(c.encode(responseEncoding, response))
}
if (this._requestIsStream(command) && this._responseIsStream(command)) {
const requestStream = new RPCRequestStream(
req,
responseEncoding,
req.createRequestStream(),
requestEncoding,
req.createResponseStream(),
responseEncoding
)
await this._handlers[command](requestStream)
}
})
}
async _call(name, args) {
const requestEncoding = this._requestEncodings.get(name)
const responseEncoding = this._responseEncodings.get(name)
const request = this._rpc.request(methods.get(name))
const encoded = c.encode(requestEncoding, args)
request.send(encoded)
return c.decode(responseEncoding, await request.reply())
}
_callSync(name, args) {
const requestEncoding = this._requestEncodings.get(name)
const responseEncoding = this._responseEncodings.get(name)
if (this._requestIsSend(name)) {
const encoded = c.encode(requestEncoding, args)
const request = this._rpc.event(methods.get(name))
request.send(encoded)
}
const request = this._rpc.request(methods.get(name))
if (!this._requestIsStream(name) && this._responseIsStream(name)) {
const encoded = c.encode(requestEncoding, args)
request.send(encoded)
return new RPCStream(request.createResponseStream(), responseEncoding)
}
if (this._requestIsStream(name) && !this._responseIsStream(name)) {
return new RPCRequestStream(
request,
responseEncoding,
null,
null,
request.createRequestStream(),
requestEncoding
)
}
if (this._requestIsStream(name) && this._responseIsStream(name)) {
return new RPCRequestStream(
request,
responseEncoding,
request.createResponseStream(),
responseEncoding,
request.createRequestStream(),
requestEncoding
)
}
}
async createChatImagePreview(args) {
return this._call('@media/create-chat-image-preview', args)
}
async createChatVideoPreview(args) {
return this._call('@media/create-chat-video-preview', args)
}
async createChatLinkPreview(args) {
return this._call('@media/create-chat-link-preview', args)
}
async createProfileAvatar(args) {
return this._call('@media/create-profile-avatar', args)
}
async createRoomAvatar(args) {
return this._call('@media/create-room-avatar', args)
}
async decodeImage(args) {
return this._call('@media/decode-image', args)
}
onCreateChatImagePreview(responseFn) {
this._handlers['@media/create-chat-image-preview'] = responseFn
}
onCreateChatVideoPreview(responseFn) {
this._handlers['@media/create-chat-video-preview'] = responseFn
}
onCreateChatLinkPreview(responseFn) {
this._handlers['@media/create-chat-link-preview'] = responseFn
}
onCreateProfileAvatar(responseFn) {
this._handlers['@media/create-profile-avatar'] = responseFn
}
onCreateRoomAvatar(responseFn) {
this._handlers['@media/create-room-avatar'] = responseFn
}
onDecodeImage(responseFn) {
this._handlers['@media/decode-image'] = responseFn
}
_requestIsStream(command) {
return [].includes(command)
}
_responseIsStream(command) {
return [].includes(command)
}
// prettier-ignore-start
_requestIsSend(command) {
return [
// prettier-ignore
].includes(command)
}
}
export default HRPC