service-model
Version:
An object oriented web service framework inspired by Windows Communication Foundation.
80 lines (79 loc) • 2.6 kB
TypeScript
import { DispatchEndpoint } from "./dispatchEndpoint";
import { ResultCallback } from "../common/callbackUtil";
import { Message } from "../message";
/**
* Represents an operation on a service endpoint in the dispatcher. Exposes configuration options for the operation.
*
* <uml>
* hide members
* hide circle
* DispatchEndpoint *-- DispatchOperation : operations
* DispatchOperation *-- OperationInvoker : invoker
* DispatchOperation *-- MessageFormatter : formatter
* </uml>
*/
export declare class DispatchOperation {
endpoint: DispatchEndpoint;
/**
* The name of the operation.
*/
name: string;
/**
* The formatter for the operation, responsible for serializing and deserailizing requests.
*/
formatter: MessageFormatter;
/**
* The object responsible for invoking the service method.
*/
invoker: OperationInvoker;
/**
* Indicates if the operation is one way. If true the dispatcher does not wait for the operation to complete before
* sending a response to the client.
*/
isOneWay: boolean;
/**
* Constructs a dispatch operation.
* @param endpoint The endpoint.
* @param name The name of the operation.
*/
constructor(endpoint: DispatchEndpoint, name: string);
/**
* Validates that the operation is correctly configured.
*/
validate(): void;
/**
* Throws a configuration error.
* @param message A message to display
* @hidden
*/
private _throwConfigError(message);
}
/**
* Describes a type that can invoker service methods.
*/
export interface OperationInvoker {
/**
* Invokes a service method on the given service instance.
* @param instance The service instance.
* @param args A list of arguments applied to the method.
* @param callback Called with result of the operation.
*/
invoke(instance: Object, args: any[], callback: ResultCallback<any>): void;
}
/**
* Represents a type that is able to deserialize requests and serialize replies.
*/
export interface MessageFormatter {
/**
* Deserialize a request message.
* @param message The request message.
* @param callback Called with a list of arguments that will be applied to the operation.
*/
deserializeRequest(message: Message, callback: ResultCallback<any[]>): void;
/**
* Serializes a reply message.
* @param result The result from the operation.
* @param callback Called with the reply message.
*/
serializeReply(result: any, callback: ResultCallback<Message>): void;
}