Skip to content

Commit

Permalink
simplified type definitions in transport packages
Browse files Browse the repository at this point in the history
  • Loading branch information
fed135 committed Jan 14, 2020
1 parent 8517c02 commit ce0bf2f
Show file tree
Hide file tree
Showing 7 changed files with 200 additions and 624 deletions.
147 changes: 20 additions & 127 deletions packages/ipc/types.d.ts
Original file line number Diff line number Diff line change
@@ -1,135 +1,28 @@
/* Types ---------------------------------------------------------------------*/

interface ClientConfig {
label?: string
routine?: KalmRoutine
json?: Boolean
transport?: KalmTransport
port?: number
host?: string
isServer?: boolean
provider?: any
}

interface ProviderConfig {
label?: string
routine?: KalmRoutine
json?: Boolean
transport?: KalmTransport
port?: number
host?: string
}

type Remote = {
host: string
port: number
}

interface Provider extends NodeJS.EventEmitter {
broadcast: (channel: string, message: Serializable) => void
label: string
stop: () => void
connections: Client[]
}

interface Client extends NodeJS.EventEmitter {
write: (channel: string, message: Serializable) => void
destroy: () => void
subscribe: (channel: string, handler: (body: any, frame: Frame) => any) => void
unsubscribe: (channel: string, handler: (body: any, frame: Frame) => any) => void
local: () => Remote
remote: () => Remote
}

type Channel = {
queue: Queue
emitter: NodeJS.EventEmitter
}

type ChannelList = {
[key: string]: Channel
}

type Serializable = Buffer | object | string | null

type UDPSocketHandle = {
socket: any
port: number
host: string
}
type UDPClient = {
client: Client
timeout: NodeJS.Timeout
data: Buffer[]
}
type UDPClientList = {
[key: string]: UDPClient
}

type SocketHandle = NodeJS.Socket | UDPSocketHandle | WebSocket

interface KalmRoutine {
(channel: string, params: any, channelEmitter: NodeJS.EventEmitter, clientEmitter: NodeJS.EventEmitter): Queue
}
interface Queue {
add: (packet: Buffer) => void
size: () => number
flush: () => void
}

interface KalmTransport {
(params: any, emitter: NodeJS.EventEmitter): Socket
}
interface Socket {
bind: () => void
remote: (handle: SocketHandle) => Remote
connect: (handle?: SocketHandle) => SocketHandle
stop: () => void
send: (handle: SocketHandle, message: number[] | Buffer) => void
disconnect: (handle: SocketHandle) => void
}

interface IPCConfig {
socketTimeout?: number
path?: string
}

interface TCPConfig {
socketTimeout?: number
}
declare module '@kalm/ipc' {
interface IPCConfig {
socketTimeout?: number
path?: string
}

interface UDPConfig {
type?: string
localAddr?: string
reuseAddr?: boolean
socketTimeout?: number
connectTimeout?: number
}
interface KalmTransport {
(params: any, emitter: NodeJS.EventEmitter): Socket
}

interface WSConfig {
cert?: string
key?: string
secure?: boolean
}
type Remote = {
host: string
port: number
}

type RawFrame = {
frameId: number
channel: string
packets: Buffer[]
payloadBytes: number
}
type SocketHandle = NodeJS.Socket

type Frame = {
client: Client
channel: string
frame: {
id: number
messageIndex: number
payloadBytes: number
payloadMessages: number
interface Socket {
bind: () => void
remote: (handle: SocketHandle) => Remote
connect: (handle?: SocketHandle) => SocketHandle
stop: () => void
send: (handle: SocketHandle, message: number[] | Buffer) => void
disconnect: (handle: SocketHandle) => void
}
}

declare module '@kalm/ipc' {
export default function ipc(config?: IPCConfig): (config?: IPCConfig) => Transport;
}
2 changes: 1 addition & 1 deletion packages/kalm/src/routines/tick.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
/* Methods -------------------------------------------------------------------*/

export function tick({ hz, seed = Date.now()}: { hz: number, seed?: number }): KalmRoutine {
export function tick({ hz, seed = Date.now() }: { hz: number, seed?: number }): KalmRoutine {
if (hz <= 0 || hz > 1000) {
throw new Error(`Unable to set Hertz value of ${hz}. Must be between 0.1e13 and 1000`);
}
Expand Down
Loading

0 comments on commit ce0bf2f

Please sign in to comment.